Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.01.15;
Скачать: CL | DM;

Вниз

AV после вызова GetTempFileNameW   Найти похожие ветки 

 
Псб   (2015-01-16 19:09) [0]

Здравствуйте. В неюникодных версиях Delphi этот код работает нормально, а в Delphi XE7 вызывает AV:

procedure TForm1.Button1Click(Sender: TObject);
var
 szTempPath, szTmpFile: array[0..MAX_PATH] of Char;
begin
 if GetTempPath(SizeOf(szTempPath), szTempPath) > 0 then
 begin
   ShowMessage(szTempPath);
   if GetTempFileName(szTempPath, "~", 0, szTmpFile) > 0 then
     ShowMessage(szTmpFile);
   // после происходит AV и программа завершается с ошибкой
 end;
end;

Что я делаю не так?


 
MBo ©   (2015-01-16 19:38) [1]

if GetTempPath(MAX_PATH, ...


 
Псб   (2015-01-16 20:06) [2]


> MBo ©   (16.01.15 19:38) [1]
>
> if GetTempPath(MAX_PATH, ...

Спасибо. Так работает.
Попробовал сделать так:

procedure TForm1.Button1Click(Sender: TObject);
const
 a = 100;
var
 szTempPath, szTmpFile: array[0..a-1] of Char;
begin
 if GetTempPath(a, szTempPath) > 0 then
 begin
   //ShowMessage(szTempPath);
   if GetTempFileName(szTempPath, "~", 0, szTmpFile) > 0 then
     ShowMessage(szTmpFile);

 end;
end;

Я так понял юникодная версия функции требует строго константу в качестве размера буфера, а ANSI без разницы?
Извиняюсь за назойливость, просто впервые с этим столкнулся :)


 
Псб   (2015-01-16 20:23) [3]

Вопрос снимается SizeOf(Char) = 2
Т.е можно и так написать:
if GetTempPath(SizeOf(szTempPath) div 2, szTempPath) > 0 then


 
MBo ©   (2015-01-16 21:24) [4]


> Я так понял юникодная версия функции требует строго константу
> в качестве размера буфера, а ANSI без разницы?

Не в константе дело - размер указывается в символах, а не в байтах.
из MSDN:
GetTempPath
nBufferLength [in]
The size of the string buffer identified by lpBuffer, in TCHARs.



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

Текущий архив: 2017.01.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
2-1419335246
Drowsy
2014-12-23 14:47
2017.01.15
TibDataSet в TDBGrid (TDBDridEh).


15-1455139804
Юрий
2016-02-11 00:30
2017.01.15
С днем рождения ! 11 февраля 2016 четверг


15-1448011257
Сергей Суровцев
2015-11-20 12:20
2017.01.15
Вот и про нас вспомнили


6-1282190766
avkit
2010-08-19 08:06
2017.01.15
hyperterminal


4-1278447363
mahab
2010-07-07 00:16
2017.01.15
Асинхронная запись