![]() |
Problem mit Listbox und Typen
Hallo, leider komme ich nicht mehr alleine weiter.
Ich habe ein Programm erstellt, dass Speicheradressen aus einem bestimmten Bereich ausliest und in einer Listbox ausgibt. Mir wird so etwas als String ausgegeben: z.B. (00A00000) also Hextyp. Nun möchte ich mit einem ButtonClick, diese gefundenen Adressen weiter verwenden, um mit ihnen mit Readprocessmemory die Werte auszulesen. Aber dieser Type bei Readprocessmemory ist ja : ptr($00A00000). Meine Frage ist nun, wie bekomm ich diese Strings in Hexs mit Dollorzeichen vorne drann? |
Re: Problem mit Listbox und Typen
Hallo,
geht
Delphi-Quellcode:
nicht?
ptr(StrToInt('$'+HexString))
Grüße Klaus |
Re: Problem mit Listbox und Typen
Danke dir, so hatte ich es noch nicht probiert, hatte davor ein memo.
Eine andere Frage... Wie bekomm ich die einzelnen Textzeilen aus der Listbox? ich möchte sie auf arrays speichern. |
Re: Problem mit Listbox und Typen
Hallo,
mit ListBox1.Items[i] kannst Du auf die Zeile i der Listbox zugreifen. ListBox1.Items.count liefert Dir die Anzahl der Zeilen (o basierend). ListBox1.ItemIndex liefer Dir den Index der selektierten Zeile. Grüße Klaus p.s. Hier gilt pro Frage ein neuer Thread, bitte denke demnächst daran. |
Re: Problem mit Listbox und Typen
Hey, ich danke dir sehr für deine schnelle Antwort, hat mir viel geholfen.
|
Re: Problem mit Listbox und Typen
ptr(StrToInt('$'+HexString))
geht bei mir leider nicht.. Inkompatible Typen... was kann ich machen? |
Re: Problem mit Listbox und Typen
sory, habe mich geirrt, bei mir in der Listbox sind keine Strings, sondern Hex:
Listbox1.Items.Add (IntToHex(StartMemHex,8)); |
Re: Problem mit Listbox und Typen
hm,
bei mir funktionert es:
Delphi-Quellcode:
Die Funktion ptr erwartet doch einen Integer und
procedure TForm1.Button1Click(Sender: TObject);
var a: pointer; hex: String; begin hex := 'a123bc'; a := ptr(StrToInt('$'+hex)); end; StrToInt macht aus dem hexString einen Integerwert. Vielleicht kannst Du auch mal StrToInt64 probieren. Ich weiß nicht wie groß Deine HexWerte sind. IntToHex macht aus einen Integerwert eine HexDarstellung, diese ist vom Typ aber ein String. Die Umkehrfunktion sollte dann StrToInt('$'+..) sein. Grüße Klaus |
Re: Problem mit Listbox und Typen
Wenn ich die Funktion von Delphi benutze : z.B. IntToHex(255,8) bekomm ich das zurück 00000255, aber normalerweise soll das ja FF sein, oder?
pls help me |
Re: Problem mit Listbox und Typen
Zitat:
Delphi-Quellcode:
Edit1.Text := IntToHex(255, 8);
|
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 |
Re: Problem mit Listbox und Typen
Zitat:
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 |
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 |
Re: Problem mit Listbox und Typen
.. du könntest auch
Delphi-Quellcode:
nach der if Abfrage ausführen.
StartMemHex := StartMemHex +1
Grüße Klaus |
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:
könnte es sein, das der letze Eintrag in der Listbox leer ist und deshalb kein Integerwert ist?
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; Wie könnte ich es dann lösen? |
Re: Problem mit Listbox und Typen
Hallo,
habe einen Kommentar eingefügt. Grüße Klaus Zitat:
|
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 |
Re: Problem mit Listbox und Typen
begin-end ist was tolles...
|
Re: Problem mit Listbox und Typen
Delphi-Quellcode:
mfgvar 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; das muss so sein da nach jedem for durchgang i automatisch erhöh wird! außerdem begin end vergessen! mfg |
Re: Problem mit Listbox und Typen
Danke euch beiden.
|
Re: Problem mit Listbox und Typen
Ey bei mir ist sitzt hier Problem auf Problem...
Möchte erreichen, dass ich die Listbox zuerst leere, bevor da was draufgeschrieben wird. (Listbox1.Clear;)
Delphi-Quellcode:
Listenindex wird überschritten(Fehlermeldung), falls ich es da reinschreib.procedure TForm1.Button2Click(Sender: TObject); var i, ii, Anzahl, Er : Integer; NextScan: array [0..10000] of String; Processhandle: THandle; WindowHandle, Pidi, EndMemHex, Sets : Integer; Wert :DWORD ; NextInt: array [0..10000] of Integer; NextInt_: array [0..10000] of Integer; lbuf: array [0..10000] of Integer; begin WindowHandle :=FindWindow(nil,'Guild Wars'); Anzahl:= Listbox1.Items.Count; For i:= 0 to Anzahl -1 do begin NextScan[i]:= '$' + Listbox1.Items[i]; NextInt[i]:= StrToInt(NextScan[i]); GetWindowThreadProcessId(WindowHandle ,@Pidi); ProcessHandle :=OpenProcess(PROCESS_VM_READ ,False , pidi); ReadProcessMemory(Processhandle ,ptr(NextInt[i]),@lBuf[i],4,Wert); //Listbox1.Clear; soll mir die Listbox leeren wo soll ich das reinschreiben? If lbuf[i] = SuchS Then Listbox1.Items.Add(IntToHex(NextInt[i],8)); end; end; |
Re: Problem mit Listbox und Typen
Am Anfang. Allerdings solltest du dann die Schleife anders deklarieren.
|
Re: Problem mit Listbox und Typen
Vor der Schleife? Oder wo? und was muss ich ändern... die ist doch richtig
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 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