Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
15-1452558730
Сергей Суровцев
2016-01-12 03:32
2017.01.15
Appmethod слили


2-1425123097
SergP
2015-02-28 14:31
2017.01.15
Наследники абстрактных классов


15-1457040604
Юрий
2016-03-04 00:30
2017.01.15
С днем рождения ! 4 марта 2016 пятница


15-1448010775
Kerk
2015-11-20 12:12
2017.01.15
Все работы хороши


15-1435613404
Юрий
2015-06-30 00:30
2017.01.15
С днем рождения ! 30 июня 2015 вторник




   Наверх