Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.008 c
14-22323
Melamed
2001-11-04 19:57
2002.01.08
Как исправить данные анкетные, веденные при регистрации?


4-22511
Plug&Play
2001-10-29 22:23
2002.01.08
А как программно выключить компьютер?


1-22023
DelphiG
2001-12-13 03:13
2002.01.08
У меня ? не по теме. В какой ОС лучше всего работает Delphi.


3-21903
Victor Tsay
2001-11-29 10:02
2002.01.08
Репликация


4-22482
PONTIY
2001-11-01 10:06
2002.01.08
WinExec или ShellExecute





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский