Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Вниз
Не могу сохранить ресурс в файл Найти похожие ветки
← →
Reyst (2001-12-16 15:56) [0]Уважаемые мастера! Пишу на C++, но понадобилось написать программу на Delphi.
В нижеприведенном коде при выполнении "игнорируются" две строки,
помеченные !!!, несмотря на то, что код для них генерируется
(в браузере кода строки отмечены синей точкой, оптимизация отключена).
Вопрос: почему? Подозреваю, что собака зарыта в StrCat,
т.к. не до конца разобрался со строками в Паскале,
несмотря на явное родство PChar с "сишными" строками.
(FullPath - глобальная переменная, PChar)
function DoResource(Instance: HModule; ResType: PChar;
ResName: PChar; Param: Longint): BOOL; stdcall;
var
Res: TResourceStream;
FileName: PChar;
begin
GetMem(FileName, 255);
FileName^ := Chr(0);
Res := TResourceStream.Create(Instance, ResName, ResType);
!!! FileName := StrCat(FullPath, ResName);
!!! Res.SaveToFile(FileName);
Res.Free;
DoResource := true;
end;
← →
PVR (2001-12-16 19:35) [1]function DoResource(Instance: HModule; ResType: PChar;
ResName: PChar; Param: Longint): BOOL; safacall{!!!!!!};
var
Res: TResourceStream;
FileName: PChar;
begin
GetMem(FileName, 255);
try
FileName^ := Chr(0);
with TResourceStream.Create(Instance, ResName, ResType) do
try
!!! FileName := StrCat(FullPath, ResName);
!!! SaveToFile(FileName);
finally
Res.Free;
end;
DoResource := true;
finally
freemem(filename);
end
end;
← →
MrBeer (2001-12-16 19:54) [2]//......
FileName := StrAlloc(512);
Res := TResourceStream.Create(Instance, ResName, ResType)
StrCopy(FileName, FullPath);
StrCat(FileName, ResName);
Res.SaveToFile(StrPas(FileName));
Res.Free;
StrDispose(FileName);
//......
← →
MrBeer (2001-12-16 19:59) [3]+ zhelatelno
vmesto StrCat polzovatj StrLCat & try block sdelatj.
best regards.
← →
Reyst (2001-12-16 20:03) [4]> MrBeer.
А так и было. Просто я на время поиска глюка все убрал по максимуму.
Спасибо!
← →
PVR (2001-12-16 22:22) [5]function DoResource(Instance: HModule; ResType: PChar;
ResName: PChar; Param: Longint): BOOL; safecall{!!!!!!};
var
FileName: string;
begin
GetMem(FileName, 255);
try
FileName := "";
with TResourceStream.Create(Instance, ResName, ResType) do
try
!!! FileName := FullPath+string(ResName);
!!! SaveToFile(FileName);
finally
Res.Free;
end;
DoResource := true;
finally
freemem(filename);
end
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c