Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

LoadString,LoadBitmap и прочие load...   Найти похожие ветки 

 
TeNY ©   (2005-02-15 08:53) [0]

Почему этот код не работает?Я открываю файл Delphi32.ехе в котором есть строка с идентификатором 4094(Ресторатором посмотрел) а она не грузится?



procedure TForm1.Button1Click(Sender: TObject);
var
hExe:HWND ;        // handle to existing .EXE file
TChar:PChar;
begin
if OpenDialog1.Execute then
begin
hExe := LoadLibrary(pchar(OpenDialog1.FileName));
LoadString(hExe,4094,TChar,255);
Memo1.Text:=TChar;
FreeLibrary(hExe);
end;


 
Anatoly Podgoretsky ©   (2005-02-15 09:04) [1]

Она то грузится, только вопрос куда, чью ты память испохабил?


 
Чапаев ©   (2005-02-15 09:48) [2]

1) Как правильно заметил старший товарищ, неплохо бы под PChar память выделить.
2) Неплохо бы проверять, успешно ли загрузился файл.


 
icWasya ©   (2005-02-15 19:02) [3]

например так

procedure TForm1.Button1Click(Sender: TObject);
var
 hExe:HWND ;        // handle to existing .EXE file
 TChar:array [0..255] of char;
begin
 if OpenDialog1.Execute then begin
   hExe := LoadLibrary(pchar(OpenDialog1.FileName));
   if hExe<>0 then begin
      LoadString(hExe,4094,TChar,sizeof(TChar));
      Memo1.Text:=TChar;
      FreeLibrary(hExe);
   end;
 end;
end;



 
TeNY ©   (2005-02-16 16:26) [4]


> icWasya ©   (15.02.05 19:02) [3]

А сам то проверял работоспособность своего кода на предмет загрузки этой строки?

> Anatoly Podgoretsky ©   (15.02.05 09:04) [1]
> Она то грузится, только вопрос куда, чью ты память испохабил?

речь не памяти
даже если и выделять память при помощи GETMEM строка всё равно не грузится!Да и Bitmap тоже.


> Чапаев ©   (15.02.05 09:48) [2]
> 1) Как правильно заметил старший товарищ, неплохо бы под
> PChar память выделить.
> 2) Неплохо бы проверять, успешно ли загрузился файл.

Всё сделал!Всё равно не работает

вот исправленный текст
procedure TForm1.Button1Click(Sender: TObject);
var
hExe:HWND ;        // handle to existing .EXE file
TChar:pchar;
begin
if OpenDialog1.Execute then begin
  hExe := LoadLibrary(pchar(OpenDialog1.FileName));
  if hExe<>0 then begin
     GetMem(TChar,255);
     LoadString(hExe,4094,TChar,255);
     Memo1.Text:=TChar;
  end;
     FreeLibrary(hExe);
end;
end;


 
GuAV ©   (2005-02-16 18:11) [5]


>  hExe := LoadLibrary(pchar(OpenDialog1.FileName));
>  if hExe<>0 then begin
>     GetMem(TChar,255);
>     LoadString(hExe,4094,TChar,255);
>     Memo1.Text:=TChar;
>  end;
>      FreeLibrary(hExe);


hExe := LoadLibrary(pchar(OpenDialog1.FileName));
if hExe = 0 then RaiseLastWin32Error;
try
 GetMem(TChar,255);
 try
   if not LoadString(hExe,4094,TChar,255) then
     RaiseLastWin32Error;
 finally
   FreeMem(TChar)
 end;
finally
 FreeLibrary(hExe);
end;

Что скажет ?


 
TeNY ©   (2005-02-16 18:25) [6]

Type of expression must be BOOLEAN
напротив

>    if not LoadString(hExe,4094,TChar,255) then

и
[Warning] Unit1.pas(47): Symbol "RaiseLastWin32Error" is deprecated
напртив
> RaiseLastWin32Error;


 
GrayFace ©   (2005-02-16 19:05) [7]

TeNY ©   (16.02.05 18:25) [6]
Напиши вместо него if LoadString(hExe,4094,TChar,255)=0 then
А, чтобы Warning"a не было - RaiseLastOSError вместо RaiseLastWin32Error.



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
3-1109488218
Dyusha
2005-02-27 10:10
2005.03.27
Экспорт StringGrid в ADOQuery


3-1109321159
juice
2005-02-25 11:45
2005.03.27
где IB Expert хранит свои настройки?


1-1110788735
Я1
2005-03-14 11:25
2005.03.27
TreeView.Items.Clear - Access violation


3-1109237034
kivadim
2005-02-24 12:23
2005.03.27
изменение кодировки в базе MSSQL


3-1109583378
wolf2541
2005-02-28 12:36
2005.03.27
Не работает etoCanNavigation в dxDbTreeList