Главная страница
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.025 c
15-1449783004
Юрий
2015-12-11 00:30
2017.01.15
С днем рождения ! 11 декабря 2015 пятница


15-1453239002
Юрий
2016-01-20 00:30
2017.01.15
С днем рождения ! 20 января 2016 среда


2-1424681725
Эрнест
2015-02-23 11:55
2017.01.15
URLEncodeReservedChars


6-1282282725
RGV
2010-08-20 09:38
2017.01.15
POP3


15-1449692823
Сергей Суровцев
2015-12-09 23:27
2017.01.15
История и современность