Форум: "Начинающим";
Текущий архив: 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.045 c