Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Вниз

Почему это до сих пор работало?   Найти похожие ветки 

 
TUser ©   (2008-05-12 11:07) [0]

Интересно, почему такой код работает? Конкретно, работает в Win2003/TurboDelphi и года три уже отработал в ВинХР/Delphi7. И только недавно на ХР стал выдавать ошибку, причем - при отладке из-под среды ошибки нет, а запустишь тот же экзешник - говорит, что нельзя писать куда-то, ошибка в ntdll.dll. Почему возникает исключение - понятно. Непонятно, почему только сейчас.


function CurDir: string;
var a: PAnsiChar;
   i: integer;
begin
 a := "";
 GetCurrentDirectory (i, a);
 GetMem (a, i);
 GetCurrentDirectory (i, a);
 result := a;
end;


 
Сергей М. ©   (2008-05-12 11:26) [1]


> недавно на ХР стал выдавать ошибку


Знать звезды расположились по-другому)


 
Leonid Troyanovsky ©   (2008-05-12 12:32) [2]


> TUser ©   (12.05.08 11:07)  

> Интересно, почему такой код работает?

Да уж, плотность ошибок впечатляет.

Дык, и что было понято?

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-05-12 13:06) [3]

В рубашке родился.


 
Игорь Шевченко ©   (2008-05-12 13:12) [4]


> Интересно, почему такой код работает?


потому что i принимает произвольное значение


 
Юрий Зотов ©   (2008-05-12 13:29) [5]

Не попробовать ли GetCurrentDir?
:о)


 
tesseract ©   (2008-05-12 20:17) [6]


var a: PAnsiChar;
  i: integer;
 NeedSize:integer;
begin
a := null;
try
NeedSize:=GetCurrentDirectory (i, a);
if NeedSize=0  // опа она всегда случаеться GetLastError по вкусу
begin
 Path:=""; // path var параметр
 exit;
end;
GetMem (a, NeedSize);
GetCurrentDirectory (i, a);
path:=a; // path var параметр
finally
FreeMem(a);
end;
end;


Вроде так, Хотя FreeMem от версии Delphi зависит.


 
tesseract ©   (2008-05-12 20:18) [7]

чуть напутал, там понятно, где опечатался :-)


 
Юрий Зотов ©   (2008-05-12 21:38) [8]

Ужасно...
:-(


 
Leonid Troyanovsky ©   (2008-05-12 22:47) [9]


> tesseract ©   (12.05.08 20:18) [7]

Любопытно.
См. [1-5].

--
Regards, LVT.


 
Германн ©   (2008-05-13 00:52) [10]

Хм. Что для Юрия ужасно, то для Леонида любопытно. Что бы это значило?


 
XentaAbsenta ©   (2008-05-13 13:38) [11]

ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/fileio/fs/getcurrentdirectory.htm

DWORD GetCurrentDirectory(
 DWORD nBufferLength,
 LPTSTR lpBuffer
);

Parameters
nBufferLength
[in] Length of the buffer for the current directory string, in TCHARs. The buffer length must include room for a terminating null character.


 
XentaAbsenta ©   (2008-05-13 13:42) [12]

кстати в делфи GetCurrentDir тоже не сильно хорошо сделана

procedure _LGetDir(D: Byte; var S: string);
{$IFDEF MSWINDOWS}
var
 Drive: array[0..3] of Char;
 DirBuf, SaveBuf: array[0..MAX_PATH] of Char;
begin
 if D <> 0 then
 begin
   Drive[0] := Chr(D + Ord("A") - 1);
   Drive[1] := ":";
   Drive[2] := #0;
   GetCurrentDirectory(SizeOf(SaveBuf), SaveBuf);
   SetCurrentDirectory(Drive);
 end;
 GetCurrentDirectory(SizeOf(DirBuf), DirBuf);
 if D <> 0 then SetCurrentDirectory(SaveBuf);
 S := DirBuf;
{$ENDIF}
{$IFDEF LINUX}
var
 DirBuf: array[0..MAX_PATH] of Char;
begin
 __getcwd(DirBuf, sizeof(DirBuf));
 S := string(DirBuf);
{$ENDIF}
end;


 
Игорь Шевченко ©   (2008-05-13 13:49) [13]

XentaAbsenta ©

К чему этот поток сознания ?


 
XentaAbsenta ©   (2008-05-13 13:52) [14]

Удалено модератором
Примечание: Флудить завязываем


 
Юрий Зотов ©   (2008-05-13 14:48) [15]

> XentaAbsenta ©   (13.05.08 13:42) [12]

> кстати в делфи GetCurrentDir тоже не сильно хорошо сделана

function GetCurrentDir: string;
begin
 GetDir(0, Result);
end;

Это D7. При чем тут _LGetDir - непонятно.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.043 c
8-1181815939
MovieMan
2007-06-14 14:12
2008.06.08
Модули для lame_enc.dll


2-1210916354
Opera1
2008-05-16 09:39
2008.06.08
ValueListEditor1 добавление значений


15-1209503846
i
2008-04-30 01:17
2008.06.08
компилятор Delphi2007 быстрее Delphi7 или нет?


2-1210756124
WebSQLNeederr
2008-05-14 13:08
2008.06.08
Как сделать что бы можно было копировать ячейки СтригГрида?


3-1199432867
Ganda
2008-01-04 10:47
2008.06.08
сортировка символьного поля как целочисленное





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский