Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Problem mit Listbox und Typen (https://www.delphipraxis.net/115598-problem-mit-listbox-und-typen.html)

wadimwadim 15. Jun 2008 10:56

Re: Problem mit Listbox und Typen
 
OK, es stimmt ja alles was Ihr sagt, wird wohl eher an mir liegen, da ich mich mit Delphi kaum auskenne und mich die Typen, die man alle konventieren muss mich verrückt machen.

Ich habe auf meinem Formular 3 edit-Felder... in 2 gebe ich ein von wo, bis wo, der Bereich durchsucht werden soll, ins dritte gebe ich ein, wonach gesucht werden soll.
Mir wird aber nicht das ausgegeben, was ich in der Listbox haben möchte. Helft mir bitte.
Code ist unschön ;( sory

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Processhandle: THandle;
  WindowHandle, i, Pidi,
  lBuf, EndMemHex, StartMemHex,
  Sets, SuchS :                Integer;
  Wert :DWORD ;

  StartMem, EndMem, SuchMem,
  SHex, EHex:                   String;
begin
  listbox1.Clear;
  StartMem:= edit2.Text;
  EndMem := edit3.Text;
  SuchMem := edit4.Text;
  SuchS:= StrToInt(SuchMem);

  SHex:= '$'+ StartMem;
  EHex:= '$'+ EndMem;

  StartMemHex:= StrToInt(SHex);
  EndMemHex:= StrToInt(EHex);

  WindowHandle :=FindWindow(nil,'Guild Wars');
  While StartMemHex <= EndMemHex Do
      begin
      GetWindowThreadProcessId(WindowHandle ,@Pidi);
      ProcessHandle :=OpenProcess(PROCESS_VM_READ ,False , pidi);
      ReadProcessMemory(Processhandle ,ptr(StartMemHex),@lBuf,4,Wert);
      StartMemHex:= StartMemHex + 1;
      If SuchS = lbuf Then
      Listbox1.Items.Add (IntToHex(StartMemHex,8));
      Sets:= Listbox1.Items.Count;
      Label5.Caption:=IntToStr(Sets) ;
      end;
  end;

So etwas sollte in der Listbox z. B. rauskommen :
00A0002F
00A00037
00A0003F
00A00047
00A0004F
00A00057

bei mir kommt aber das raus:
00A00030
00A00038
00A00040
00A00048

Klaus01 15. Jun 2008 11:16

Re: Problem mit Listbox und Typen
 
Zitat:

Zitat von wadimwadim
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
...
  While StartMemHex <= EndMemHex Do
    begin
     ...
      StartMemHex:= StartMemHex + 1;
      If SuchS = lbuf Then
        Listbox1.Items.Add (IntToHex(StartMemHex,8));
      Sets:= Listbox1.Items.Count;
      Label5.Caption:=IntToStr(Sets) ;
    end;
  end;

So etwas sollte in der Listbox z. B. rauskommen :
00A0002F
00A00037
00A0003F
00A00047
00A0004F
00A00057

bei mir kommt aber das raus:
00A00030
00A00038
00A00040
00A00048

Hallo,

die Werte die Du herausbekommst unterscheiden sich nur um 1 Byte
von den Werten die Du herausbekommen willst.
Es mag sein, das dieses an StartMemHex := StartMemHex +1 liegt.

Grüße
Klaus

wadimwadim 15. Jun 2008 11:24

Re: Problem mit Listbox und Typen
 
Danke dir schon wieder, habe ich gar nicht bemerkt, dass die wert sich nur um 1byte unterscheiden.
Listbox1.Items.Add (IntToHex(StartMemHex-1,8)); funktionierts

Klaus01 15. Jun 2008 11:30

Re: Problem mit Listbox und Typen
 
.. du könntest auch
Delphi-Quellcode:
StartMemHex := StartMemHex +1
nach der if Abfrage ausführen.

Grüße
Klaus

wadimwadim 15. Jun 2008 11:49

Re: Problem mit Listbox und Typen
 
Brauche noch einmal deine Hilfe.
Und zwar möchte ich nun die Ergebnisse, die in meiner Listbox rauskommen, nocheinmal auslesen. Dazu füll ich sie auf arrays, was auch klappt, nur wenn ich jetzt die arrays in integer typen umwandeln möchte, kommt bei mir die Fehlermeldung, dass ''kein gültiger Integerwert sei.
hier bsp.

Delphi-Quellcode:
var
  i, Anzahl : Integer;
  NextScan: array [0..100] of String;
  NextInt: array [0..100] of Integer;

begin
Anzahl:= Listbox1.Items.Count;
For i:= 0 to Anzahl -1 do
  NextScan[i]:= '$' + Listbox1.Items[i];
  NextInt[i]:= StrToInt(NextScan[i]);
  i:= i + 1;
end;
könnte es sein, das der letze Eintrag in der Listbox leer ist und deshalb kein Integerwert ist?
Wie könnte ich es dann lösen?

Klaus01 15. Jun 2008 12:22

Re: Problem mit Listbox und Typen
 
Hallo,

habe einen Kommentar eingefügt.

Grüße
Klaus

Zitat:

Zitat von wadimwadim
Delphi-Quellcode:
var
  i, Anzahl : Integer;
  NextScan: array [0..100] of String;
  NextInt: array [0..100] of Integer;

begin
Anzahl:= Listbox1.Items.Count;
For i:= 0 to Anzahl -1 do    // i wird hier erhöht
  NextScan[i]:= '$' + Listbox1.Items[i];
  NextInt[i]:= StrToInt(NextScan[i]);
  i:= i + 1; //  <--- das hier solltest Du tunlichst unterlassen
end;


wadimwadim 15. Jun 2008 12:33

Re: Problem mit Listbox und Typen
 
Sory, aber versteh ich nicht so ganz. Wenn ich bei Anzahl dieses -1 weglass, dann kommt eine Fehlermeldung, dass Listenindex überschritten wird. Und wenn ich das mit i: i+1 weglass, ist bei mir die selber Fehlermeldung, wie im vorigem Beitrag.
was kann ich tun?

Gruß
Wadim

Apollonius 15. Jun 2008 12:38

Re: Problem mit Listbox und Typen
 
begin-end ist was tolles...

MSSSSM 15. Jun 2008 12:42

Re: Problem mit Listbox und Typen
 
Delphi-Quellcode:

var
  i, Anzahl : Integer;
  NextScan: array [0..100] of String;
  NextInt: array [0..100] of Integer;

begin
Anzahl := Listbox1.Items.Count; //ok

For i:= 0 to Anzahl -1 do    
begin
  NextScan[i]:= '$' + Listbox1.Items[i];
  NextInt[i]:= StrToInt(NextScan[i]);
end;
end;
mfg
das muss so sein da nach jedem for durchgang i automatisch erhöh wird!
außerdem begin end vergessen!

mfg

wadimwadim 15. Jun 2008 12:44

Re: Problem mit Listbox und Typen
 
Danke euch beiden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Seite 2 von 3     12 3      

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