Главная страница
    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.47 MB
Время: 0.054 c
2-1210840591
MsGuns
2008-05-15 12:36
2008.06.08
Проблема с Transparent для TImage


4-1190818620
H@kker
2007-09-26 18:57
2008.06.08
Нужно добавит новый пункт в системное контекстное меню...


4-1190785775
арпывапр
2007-09-26 09:49
2008.06.08
CallNextHookEx - не нужнаю


15-1208952397
Ega23
2008-04-23 16:06
2008.06.08
Можно ли приблизительно оценить длину записи


2-1210767363
evgenij
2008-05-14 16:16
2008.06.08
Scroll in DBGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский