Autor Beitrag
XtrmK3v0r
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Do 20.02.03 19:07 
Hi! Ich hab da ein Problem mit dem MemoryStream. Die API Funktion ReadProcessMemory füllt meinen Buffer mit Daten, dieser wird also komplett gefüllt auch mit den richtigen Werten, nun versuch ich den Inhalt des Buffers in den MemoryStream zu bekommen aber irgendwie funktioniert das nicht. Kann mir jemand sagen weshalb? In meiner Memo wird nichts angezeigt!

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
Procedure TForm1.Lese_Speicher(id : LongInt);
var
 prozess_h: THandle;
 bytes_gelesen : Cardinal;
 buffer : array of byte;
 start, ende : LongInt;
 stream : TMemoryStream;
Begin
try
start:=StrToInt(Edit1.Text);
except Application.MessageBox('Gültige Startaddresse eingeben!','Falsche Eingabe',MB_OK);
end;
try
ende:=StrToInt(Edit2.Text);
except Application.MessageBox('Gültige Grenze eingeben!','Falsche Eingabe',MB_OK);
end;
// Buffergröße festlegen
SetLength(Buffer,ende-start);
// versuche den prozess zu öffnen
prozess_h:=OpenProcess(PROCESS_VM_READ,FALSE,id);
// Lese aus dem Speicher
if prozess_h<>0 then
if ReadProcessMemory(prozess_h,Ptr(start),buffer,ende-start,bytes_gelesen)=FALSE
 then Application.MessageBox('Konnte nich lesen','Fehler',MB_OK);
// Schließe den Prozeß
CloseHandle(prozess_h);
// Kopiere den Buffer in das Memofeld
stream:=TMemoryStream.Create;
stream.SetSize(sizeof(Buffer));
Move(Buffer,stream.memory^,stream.size);
// alternative: stream.Write(buffer,sizeof(buffer));
Memo1.Lines.LoadFromStream(stream);
stream.free;
end;


Wie gesagt der Buffer wird komplett mit den richtigen Werten gefüllt nur bekomm ich dessen Inhalt partout nicht in den Stream :(

Moderiert von user profile iconKlabautermann: Code-Tags hinzugefügt.
salsatigre
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 04.04.03 13:24 
Probiers mal mit

ausblenden Quelltext
1:
stream.Position := 0;					

vor dem
ausblenden Quelltext
1:
Memo1.Lines.LoadFromStream(stream);					


da anscheinend der pointer am streamende steht;
hat selbst auch mal so ein problem

Viel spazz

_________________
programmers doesn't die
they only gosub ..... aaaargh

PS: Version Delphi 6 SP 1