Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ressourcen aus anderen Pe Dateien auslesen (https://www.delphipraxis.net/120889-ressourcen-aus-anderen-pe-dateien-auslesen.html)

Larsi 18. Sep 2008 12:29


Ressourcen aus anderen Pe Dateien auslesen
 
Hi,
ich habe in der Codelib folgenden Code gefunden:
Delphi-Quellcode:
program ResLister;
{$APPTYPE CONSOLE}
uses
  Windows,
  SysUtils;

const
  // Nicht in Delphi 4 deklariert.
  RT_HTML = PChar(23);
  RT_MANIFEST = PChar(24);

var
  // Mappingliste von Typen zu Namen
  ResourceTypeDefaultNames: array[0..20] of record
    ResType: PChar;
    ResTypeName: string;
  end = (
    (ResType: RT_ACCELERATOR; ResTypeName: 'RT_ACCELERATOR'; ),
    (ResType: RT_ANICURSOR; ResTypeName: 'RT_ANICURSOR'; ),
    (ResType: RT_ANIICON; ResTypeName: 'RT_ANIICON'; ),
    (ResType: RT_BITMAP; ResTypeName: 'RT_BITMAP'; ),
    (ResType: RT_CURSOR; ResTypeName: 'RT_CURSOR'; ),
    (ResType: RT_DIALOG; ResTypeName: 'RT_DIALOG'; ),
    (ResType: RT_DLGINCLUDE; ResTypeName: 'RT_DLGINCLUDE'; ),
    (ResType: RT_FONT; ResTypeName: 'RT_FONT'; ),
    (ResType: RT_FONTDIR; ResTypeName: 'RT_FONTDIR'; ),
    (ResType: RT_GROUP_CURSOR; ResTypeName: 'RT_GROUP_CURSOR'; ),
    (ResType: RT_GROUP_ICON; ResTypeName: 'RT_GROUP_ICON'; ),
    (ResType: RT_HTML; ResTypeName: 'RT_HTML'; ),
    (ResType: RT_ICON; ResTypeName: 'RT_ICON'; ),
    (ResType: RT_MANIFEST; ResTypeName: 'RT_MANIFEST'; ),
    (ResType: RT_MENU; ResTypeName: 'RT_MENU'; ),
    (ResType: RT_MESSAGETABLE; ResTypeName: 'RT_MESSAGETABLE'; ),
    (ResType: RT_PLUGPLAY; ResTypeName: 'RT_PLUGPLAY'; ),
    (ResType: RT_RCDATA; ResTypeName: 'RT_RCDATA'; ),
    (ResType: RT_STRING; ResTypeName: 'RT_STRING'; ),
    (ResType: RT_VERSION; ResTypeName: 'RT_VERSION'; ),
    (ResType: RT_VXD; ResTypeName: 'RT_VXD'; )
    );

(******************************************************************************
** GetEnglishLangName (Hilfsfunktion)
**
** Diese Hilfsfunktion holt den Namen der als LANGID übergebenen Sprache auf
** Englisch und gibt sie als String zurück.
******************************************************************************)

function GetEnglishLangName(langid: LANGID): string;
var
  len: Integer;
  lcid: DWORD;
begin
  lcid := DWORD(langid or (SORT_DEFAULT shl 16)); // MAKELCID
  len := GetLocaleInfoA(lcid, LOCALE_SENGLANGUAGE, nil, 0);
  SetLength(Result, len);
  GetLocaleInfoA(lcid, LOCALE_SENGLANGUAGE, @Result[1], len);
end;

(******************************************************************************
** IS_INTRESOURCE (Hilfsfunktion)
**
** Diese Hilfsfunktion überprüft, ob es sich bei einem Ressourcentypnamen um
** einen Integertypen oder einen Stringtypen handelt. Ist es ein Integertyp, so
** wird True zurückgegeben, ansonsten False.
******************************************************************************)

function IS_INTRESOURCE(lpszType: PChar): Boolean;
begin
  Result := ((DWORD(lpszType) shr 16) = 0);
end;

(******************************************************************************
** ResourceTypes (Hilfsfunktion)
**
** Diese Hilfsfunktion erzeugt aus dem übergenen Ressourentypnamen eine lesbare
** Form. Dies schließt Integertypnamen ein.
** Sollte es sich um einen der Standardtypen handeln, so wird an die numerische
** Form des Ressourcentypnamen noch der Name der Konstante in Klammern
** angehangen.
******************************************************************************)

function ResourceTypes(lpszType: PChar): string;
var
  i: Integer;
begin
  if (IS_INTRESOURCE(lpszType)) then
    Result := Format('#%d', [Word(lpszType)])
  else
    Result := Format('%s', [string(lpszType)]);
  for i := 0 to Length(ResourceTypeDefaultNames) - 1 do
  begin
    if (MAKEINTRESOURCE(lpszType) = MAKEINTRESOURCE(ResourceTypeDefaultNames[i].ResType)) then
    begin
      Result := Result + Format(' (%s)', [ResourceTypeDefaultNames[i].ResTypeName]);
      Break;
    end;
  end;
end;

(******************************************************************************
** EnumResLangProc
**
** Eine Callback-Funktion, welche für jeden im Modul enthaltenen Ressourcentyp
** pro enthaltenem Ressourcennamen so oft aufgerufen wird, wie es Sprachen
** gibt, in denen die Ressource verfügbar ist.
**
** Die Funktion ihrerseits gibt den aktuellen Sprachcode aus.
******************************************************************************)

function EnumResLangProcA(hModule: HINST; lpszType: PChar; lpszName: PChar; wIDLanguage: Word; lParam: LPARAM): BOOL; stdcall;
begin
  Writeln(Format(#9'%4.4X - %s', [wIDLanguage, GetEnglishLangName(wIDLanguage)]));
  Result := True;
end;

(******************************************************************************
** EnumResNameProc
**
** Eine Callback-Funktion, welche für jeden im Modul enthaltenen Ressourcentyp
** pro enthaltenem Ressourcennamen einmal aufgerufen wird.
**
** Die Funktion ihrerseits gibt den Namen der Ressource aus und ermittelt die
** Sprachcodes (LANGID) der Sprachen in welchen die Ressource verfügbar ist
** durch Aufruf einer weiteren Enumerierungsfunktion EnumResLangProc().
******************************************************************************)

function EnumResNameProcA(hModule: HINST; lpszType: PChar; lpszName: PChar; lParam: LPARAM): BOOL; stdcall;
begin
  // Teste auf Integer statt Namen
  if (IS_INTRESOURCE(lpszName)) then
    Writeln(Format(' -> #%d', [Word(lpszName)]))
  // Ansonsten normal als String behandeln
  else
    Writeln(Format(' -> %s', [string(lpszName)]));
  EnumResourceLanguagesA(hModule, lpszType, lpszName, @EnumResLangProcA, 0);
  Result := True;
end;

(******************************************************************************
** EnumResTypeProc
**
** Eine Callback-Funktion, welche für jeden im Modul enthaltenen Ressourcentyp
** einmal aufgerufen wird.
**
** Die Funktion ihrerseits wandelt den Typennamen in eine lesbare Form um und
** ruft dann eine weitere Enumerierungsfunktion (und damit Callbackfunktion)
** auf, die die Namen der eigentlichen Ressourcen auflistet.
******************************************************************************)

function EnumResTypeProcA(hModule: HINST; lpszType: PChar; lParam: LPARAM): BOOL; stdcall;
begin
  Writeln('RESOURCE TYPE: ', ResourceTypes(lpszType));
  EnumResourceNamesA(hModule, lpszType, @EnumResNameProcA, 0);
  Result := True;
end;

(******************************************************************************
** ListResources
**
** Nimmt den Dateinamen der EXE oder DLL (oder anderen PE-Datei) entgegen.
**
** Danach ruft diese Funktion eine Enumerierungsfunktion auf, welche alle im
** Modul vorhandenen Ressourcentypen auflistet. Die übergebene Callbackfunktion
** EnumResTypeProc() ist für die weitere Verarbeitung zuständig.
******************************************************************************)

procedure ListResources(filename: string);
var
  hModule: HINST;
begin
  hModule := LoadLibraryEx(@filename[1], 0, LOAD_LIBRARY_AS_DATAFILE);
  if (hModule <> 0) then
  try
    EnumResourceTypesA(hModule, @EnumResTypeProcA, 0);
  finally
    FreeLibrary(hModule);
  end;
end;

(******************************************************************************
** Hauptfunktion
**
** Überprüft die Parameter und gibt ggf. einen Syntaxhinweis aus. Ansonsten
** wird die zum Auflisten der Ressourcen zuständige Funktion aufgerufen!
******************************************************************************)
begin
  if (ParamCount() < 1) then
  begin
    Writeln(Format('Syntax: %s <Filename>', [ParamStr(0)]));
    Exit;
  end;
  if (FileExists(ParamStr(1))) then
  begin
    ListResources(ParamStr(1));
  end
  else
  begin
    Writeln('The given file does not exist.');
  end;
end.
Kann mir jemand sagen wie ich den umändern muss das ich den auch in "Grafischen" Anweundungen von mir also mit ganz normalen Forms ohne Konsole verwenden kann. Wenn ich manche Sachen übernehm kommt es nämlich zu Fehlern.

MFG Lars Wiltfang

Neutral General 18. Sep 2008 12:31

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Hi,

Musst halt die ganzen readlns und writelns rausnehmen... Ersetz sie durch was anderes oder lass sie weg.

Larsi 18. Sep 2008 12:33

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Und wo muss der Teil hier hin:
Delphi-Quellcode:
  end = (
    (ResType: RT_ACCELERATOR; ResTypeName: 'RT_ACCELERATOR'; ),
    (ResType: RT_ANICURSOR; ResTypeName: 'RT_ANICURSOR'; ),
    (ResType: RT_ANIICON; ResTypeName: 'RT_ANIICON'; ),
    (ResType: RT_BITMAP; ResTypeName: 'RT_BITMAP'; ),
    (ResType: RT_CURSOR; ResTypeName: 'RT_CURSOR'; ),
    (ResType: RT_DIALOG; ResTypeName: 'RT_DIALOG'; ),
    (ResType: RT_DLGINCLUDE; ResTypeName: 'RT_DLGINCLUDE'; ),
    (ResType: RT_FONT; ResTypeName: 'RT_FONT'; ),
    (ResType: RT_FONTDIR; ResTypeName: 'RT_FONTDIR'; ),
    (ResType: RT_GROUP_CURSOR; ResTypeName: 'RT_GROUP_CURSOR'; ),
    (ResType: RT_GROUP_ICON; ResTypeName: 'RT_GROUP_ICON'; ),
    (ResType: RT_HTML; ResTypeName: 'RT_HTML'; ),
    (ResType: RT_ICON; ResTypeName: 'RT_ICON'; ),
    (ResType: RT_MANIFEST; ResTypeName: 'RT_MANIFEST'; ),
    (ResType: RT_MENU; ResTypeName: 'RT_MENU'; ),
    (ResType: RT_MESSAGETABLE; ResTypeName: 'RT_MESSAGETABLE'; ),
    (ResType: RT_PLUGPLAY; ResTypeName: 'RT_PLUGPLAY'; ),
    (ResType: RT_RCDATA; ResTypeName: 'RT_RCDATA'; ),
    (ResType: RT_STRING; ResTypeName: 'RT_STRING'; ),
    (ResType: RT_VERSION; ResTypeName: 'RT_VERSION'; ),
    (ResType: RT_VXD; ResTypeName: 'RT_VXD'; )
    );

Neutral General 18. Sep 2008 12:38

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Hi,

Mach es der Übersicht und dem Verständnis wegen so:

Delphi-Quellcode:
interface

type
  TResourceName = record
    ResType: PChar;
    ResTypeName: string;
  end;

var
  // Mappingliste von Typen zu Namen
  ResourceTypeDefaultNames: array[0..20] of TResourceName =
   (
    (ResType: RT_ACCELERATOR; ResTypeName: 'RT_ACCELERATOR'; ),
    (ResType: RT_ANICURSOR; ResTypeName: 'RT_ANICURSOR'; ),
    (ResType: RT_ANIICON; ResTypeName: 'RT_ANIICON'; ),
    (ResType: RT_BITMAP; ResTypeName: 'RT_BITMAP'; ),
    (ResType: RT_CURSOR; ResTypeName: 'RT_CURSOR'; ),
    (ResType: RT_DIALOG; ResTypeName: 'RT_DIALOG'; ),
    (ResType: RT_DLGINCLUDE; ResTypeName: 'RT_DLGINCLUDE'; ),
    (ResType: RT_FONT; ResTypeName: 'RT_FONT'; ),
    (ResType: RT_FONTDIR; ResTypeName: 'RT_FONTDIR'; ),
    (ResType: RT_GROUP_CURSOR; ResTypeName: 'RT_GROUP_CURSOR'; ),
    (ResType: RT_GROUP_ICON; ResTypeName: 'RT_GROUP_ICON'; ),
    (ResType: RT_HTML; ResTypeName: 'RT_HTML'; ),
    (ResType: RT_ICON; ResTypeName: 'RT_ICON'; ),
    (ResType: RT_MANIFEST; ResTypeName: 'RT_MANIFEST'; ),
    (ResType: RT_MENU; ResTypeName: 'RT_MENU'; ),
    (ResType: RT_MESSAGETABLE; ResTypeName: 'RT_MESSAGETABLE'; ),
    (ResType: RT_PLUGPLAY; ResTypeName: 'RT_PLUGPLAY'; ),
    (ResType: RT_RCDATA; ResTypeName: 'RT_RCDATA'; ),
    (ResType: RT_STRING; ResTypeName: 'RT_STRING'; ),
    (ResType: RT_VERSION; ResTypeName: 'RT_VERSION'; ),
    (ResType: RT_VXD; ResTypeName: 'RT_VXD'; )
   );

Larsi 18. Sep 2008 12:43

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Direkt hinter interface? Da kommen sehr viele Fehler.

Neutral General 18. Sep 2008 12:45

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Och Lars.

Das ist ne Record Deklaration und danach eine globale, vorinitialisierte Variable.

Was für Fehler kommen denn da?

Larsi 18. Sep 2008 12:47

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Also wenn ich das jetzt so mache wie du gesagt hast sieht das oben in der pas Datei so aus:
Delphi-Quellcode:
unit Unit3;

interface



type
  TResourceName = record
    ResType: PChar;
    ResTypeName: string;
  end;

var
  // Mappingliste von Typen zu Namen
  ResourceTypeDefaultNames: array[0..20] of TResourceName =
   (
    (ResType: RT_ACCELERATOR; ResTypeName: 'RT_ACCELERATOR'; ),
    (ResType: RT_ANICURSOR; ResTypeName: 'RT_ANICURSOR'; ),
    (ResType: RT_ANIICON; ResTypeName: 'RT_ANIICON'; ),
    (ResType: RT_BITMAP; ResTypeName: 'RT_BITMAP'; ),
    (ResType: RT_CURSOR; ResTypeName: 'RT_CURSOR'; ),
    (ResType: RT_DIALOG; ResTypeName: 'RT_DIALOG'; ),
    (ResType: RT_DLGINCLUDE; ResTypeName: 'RT_DLGINCLUDE'; ),
    (ResType: RT_FONT; ResTypeName: 'RT_FONT'; ),
    (ResType: RT_FONTDIR; ResTypeName: 'RT_FONTDIR'; ),
    (ResType: RT_GROUP_CURSOR; ResTypeName: 'RT_GROUP_CURSOR'; ),
    (ResType: RT_GROUP_ICON; ResTypeName: 'RT_GROUP_ICON'; ),
    (ResType: RT_HTML; ResTypeName: 'RT_HTML'; ),
    (ResType: RT_ICON; ResTypeName: 'RT_ICON'; ),
    (ResType: RT_MANIFEST; ResTypeName: 'RT_MANIFEST'; ),
    (ResType: RT_MENU; ResTypeName: 'RT_MENU'; ),
    (ResType: RT_MESSAGETABLE; ResTypeName: 'RT_MESSAGETABLE'; ),
    (ResType: RT_PLUGPLAY; ResTypeName: 'RT_PLUGPLAY'; ),
    (ResType: RT_RCDATA; ResTypeName: 'RT_RCDATA'; ),
    (ResType: RT_STRING; ResTypeName: 'RT_STRING'; ),
    (ResType: RT_VERSION; ResTypeName: 'RT_VERSION'; ),
    (ResType: RT_VXD; ResTypeName: 'RT_VXD'; )
   );

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, shellapi, StdCtrls, ExtCtrls, Registry, XPMan, ComCtrls, signed, md5,
  DFFileInfo, AppEvnts, DECHash, DECUtil, DECFmt;

type
  TForm3 = class(TForm)
//bla bla bla
 private

  public

  end;

var
  Form3: TForm3;


 
  end;

Dann kommen folgende Fehler:
[DCC Fehler] Unit3.pas(16): E2003 Undefinierter Bezeichner: 'RT_ACCELERATOR'
[DCC Fehler] Unit3.pas(16): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(17): E2003 Undefinierter Bezeichner: 'RT_ANICURSOR'
[DCC Fehler] Unit3.pas(17): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(18): E2003 Undefinierter Bezeichner: 'RT_ANIICON'
[DCC Fehler] Unit3.pas(19): E2003 Undefinierter Bezeichner: 'RT_BITMAP'
[DCC Fehler] Unit3.pas(20): E2003 Undefinierter Bezeichner: 'RT_CURSOR'
[DCC Fehler] Unit3.pas(21): E2003 Undefinierter Bezeichner: 'RT_DIALOG'
[DCC Fehler] Unit3.pas(22): E2003 Undefinierter Bezeichner: 'RT_DLGINCLUDE'
[DCC Fehler] Unit3.pas(22): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(23): E2003 Undefinierter Bezeichner: 'RT_FONT'
[DCC Fehler] Unit3.pas(24): E2003 Undefinierter Bezeichner: 'RT_FONTDIR'
[DCC Fehler] Unit3.pas(25): E2003 Undefinierter Bezeichner: 'RT_GROUP_CURSOR'
[DCC Fehler] Unit3.pas(25): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(26): E2003 Undefinierter Bezeichner: 'RT_GROUP_ICON'
[DCC Fehler] Unit3.pas(26): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(27): E2003 Undefinierter Bezeichner: 'RT_HTML'
[DCC Fehler] Unit3.pas(28): E2003 Undefinierter Bezeichner: 'RT_ICON'
[DCC Fehler] Unit3.pas(29): E2003 Undefinierter Bezeichner: 'RT_MANIFEST'
[DCC Fehler] Unit3.pas(29): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(30): E2003 Undefinierter Bezeichner: 'RT_MENU'
[DCC Fehler] Unit3.pas(31): E2003 Undefinierter Bezeichner: 'RT_MESSAGETABLE'
[DCC Fehler] Unit3.pas(31): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(32): E2003 Undefinierter Bezeichner: 'RT_PLUGPLAY'
[DCC Fehler] Unit3.pas(32): E2026 Konstantenausdruck erwartet
[DCC Fehler] Unit3.pas(33): E2003 Undefinierter Bezeichner: 'RT_RCDATA'
[DCC Fehler] Unit3.pas(34): E2003 Undefinierter Bezeichner: 'RT_STRING'
[DCC Fehler] Unit3.pas(35): E2003 Undefinierter Bezeichner: 'RT_VERSION'
[DCC Fehler] Unit3.pas(36): E2003 Undefinierter Bezeichner: 'RT_VXD'
[DCC Fehler] Unit3.pas(39): E2029 Deklaration erwartet, aber 'USES' gefunden
[DCC Fehler] Unit3.pas(45): E2003 Undefinierter Bezeichner: 'TForm'
[DCC Fehler] Unit3.pas(46): E2003 Undefinierter Bezeichner: 'TEdit'
[DCC Fehler] Unit3.pas(47): E2003 Undefinierter Bezeichner: 'TButton'
[DCC Fehler] Unit3.pas(48): E2003 Undefinierter Bezeichner: 'TXPManifest'
[DCC Fehler] Unit3.pas(49): E2003 Undefinierter Bezeichner: 'TOpenDialog'
[DCC Fehler] Unit3.pas(50): E2003 Undefinierter Bezeichner: 'TDFFileInfo'
[DCC Fehler] Unit3.pas(51): E2003 Undefinierter Bezeichner: 'TTimer'
[DCC Fehler] Unit3.pas(52): E2003 Undefinierter Bezeichner: 'TApplicationEvents'
[DCC Fehler] Unit3.pas(53): E2003 Undefinierter Bezeichner: 'TLabel'
[DCC Fehler] Unit3.pas(55): E2003 Undefinierter Bezeichner: 'TPageControl'
[DCC Fehler] Unit3.pas(56): E2003 Undefinierter Bezeichner: 'TTabSheet'
[DCC Fehler] Unit3.pas(57): E2003 Undefinierter Bezeichner: 'TImage'
[DCC Fehler] Unit3.pas(90): E2003 Undefinierter Bezeichner: 'TDateTimePicker'
[DCC Fehler] Unit3.pas(94): E2003 Undefinierter Bezeichner: 'TCheckBox'
[DCC Fehler] Unit3.pas(97): E2003 Undefinierter Bezeichner: 'TMemo'
[DCC Fehler] Unit3.pas(139): E2003 Undefinierter Bezeichner: 'Exception'
[DCC Fehler] Unit3.pas(141): E2003 Undefinierter Bezeichner: 'TCloseAction'
[DCC Fehler] Unit3.pas(147): E2003 Undefinierter Bezeichner: 'TWMDropFiles'
[DCC Fehler] Unit3.pas(147): E2003 Undefinierter Bezeichner: 'WM_DROPFILES'
[DCC Fehler] Unit3.pas(147): E2139 Ungültiger Botschaftsmethoden-Index
[DCC Fehler] Unit3.pas(163): E2003 Undefinierter Bezeichner: 'TMemoryStream'
[DCC Fehler] Unit3.pas(169): E2004 Bezeichner redefiniert: 'TResourceName'
[DCC Fehler] Unit1.pas(241): E2003 Undefinierter Bezeichner: 'Close'
[DCC Fehler] Unit3.pas(178): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden

Neutral General 18. Sep 2008 12:48

Re: Ressourcen aus anderen Pe Dateien auslesen
 
kein Kommentar :roll:

DeddyH 18. Sep 2008 13:04

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Was kommt denn normalerweise hinter "interface"?

SubData 18. Sep 2008 13:11

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Das ist nunmal das Problem, wenn man versucht mit Copy und Paste versucht Anwendungen zu erstellen und absolut NULL kappiert von dem, was man da tut!

Edit: Und wenn man zu faul ist, mal eben selbst zu schauen, was man denn am neuen Code anders gemacht hat, als am alten. -sic-

Larsi 18. Sep 2008 13:39

Re: Ressourcen aus anderen Pe Dateien auslesen
 
So hab das oben jetzt hinbekommen. Aber durch was soll ich das Writeln immer ersetzen? Kann man das durch Result ersetzen oder nicht?

DeddyH 18. Sep 2008 13:42

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Was macht denn writeln?

Meflin 18. Sep 2008 13:42

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Zitat:

Zitat von Larsi
So hab das oben jetzt hinbekommen. Aber durch was soll ich das Writeln immer ersetzen? Kann man das durch Result ersetzen oder nicht?

:wall:

Mensch Kind, ÜBERLEG DOCH MAL :roteyes:

Was macht writeln? Wozu braucht man das? Wodurch könnte man das ersetzen, wenn man es wollte???

Larsi 18. Sep 2008 13:44

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Ich habe noch nicht richtig was mit Console gemacht. Und warum kann man das nicht durch Result := ersetzen?


Oder sowas wie Listbox1.Add(blablabla);

Geht das?

DeddyH 18. Sep 2008 13:45

Re: Ressourcen aus anderen Pe Dateien auslesen
 
writeln -> F1 und dann mal einen Blick in meine Signatur werfen :wall:

Neutral General 18. Sep 2008 13:46

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Zitat:

Zitat von Larsi
Ich habe noch nicht richtig was mit Console gemacht. Und warum kann man das nicht durch Result := ersetzen?

Delphi-Quellcode:
function EnumResTypeProcA(hModule: HINST; lpszType: PChar; lParam: LPARAM): BOOL; stdcall;
begin
  Writeln('RESOURCE TYPE: ', ResourceTypes(lpszType));
  EnumResourceNamesA(hModule, lpszType, @EnumResNameProcA, 0);
  Result := True;
end;
Dann will ich mal sehn wie du da Result := 'RESOURCE TYPE: ' + lpszType; setzt.

Ist dir denn ungefähr bewusst, was welche procedure/funktion macht? Wenn ja, dann ist das schonmal der erste Schritt.

Meflin 18. Sep 2008 13:46

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Zitat:

Zitat von Larsi
Ich habe noch nicht richtig was mit Console gemacht. Und warum kann man das nicht durch Result := ersetzen?
Oder sowas wie Listbox1.Add(blablabla);

Du verweist doch selbst so gerne auf Google: http://www.lima-city.de/tutorials/show/2091

Also beantworte dir deine Frage einfach selbst!

Larsi 18. Sep 2008 13:46

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Wenn ich das mache sagt DElphi mir folgendes:
---------------------------
Fehler
---------------------------
Keine Hilfe für Kontext gefunden.
---------------------------
OK Details >>
---------------------------

SubData 18. Sep 2008 13:59

Re: Ressourcen aus anderen Pe Dateien auslesen
 
Zitat:

Zitat von Neutral General
Ist dir denn ungefähr bewusst, was welche procedure/funktion macht?

Nein, ihm sind nichtmal 5% des Quellcodes bewusst, sonst würden hier nicht so absolut dämliche Fragen kommen.

Larsi: Es tut mir ja leid, dass ich das so direkt sagen muss, aber wenn du nicht bald anfängst selbst über deine Fehler nachzudenken, dann wird irgendwann der Tag kommen an dem du dir mit fremden Quellcode, den du absolut nicht verstanden hast, das ganze System zerballerst. Und ganz ehrlich: Sonderlich viel Mitleid hätte ich da nicht.

Programmieren ist keine Sache von ner Stunde nebenbei, sondern von SEHR VIEL Kopfarbeit, Zeit und vor allem: Eigeninitiative.
Wenn du etwas nicht verstehst, dann nimm dir ein Buch, die Onlinehilfe, Google oder meinetwegen auch mal die DP.
Und dann SUCH nach einer Lösung.

Quellcode in den Raum werfen und hoffen, dass jemand daraus ein funktionierendes Programm macht ist absolut KEINE Lösung.

Nimm dir meinen Rat bitte zu Herzen und versuche den Code, den du verwenden willst wenigstens zu verstehen und rate nicht ins Blaue, ob er funktionieren könnte.

Btw: Sorry fürs OT.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz