Главная страница
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.027 c
15-1454623843
KilkennyCat
2016-02-05 01:10
2017.01.15
Задачка про сеть.


1-1343276932
Skyle
2012-07-26 08:28
2017.01.15
FloatToTextFmt возвращает -922337203685477.5808


2-1426309809
vrem
2015-03-14 08:10
2017.01.15
Uses разные unit автоматически - как?


15-1455628706
sniknik
2016-02-16 16:18
2017.01.15
Достали уже менять интерфейс... Мозила


2-1419250635
Drowsy
2014-12-22 15:17
2017.01.15
Вопрос по TShellTreeView.