Autor Beitrag
Slowmo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29

Suse Linux 10.1
Lazarus v.0.9.18
BeitragVerfasst: Do 19.01.06 19:02 
Ich verzweifel hier bald ... ich möchte einen Stream als String auslesen, den String in ein Bitmap verschlüsseln, die Bitmap speichern, später wieder laden entschlüsseln und den String in einen Stream speichern, doch irgendwie will das nicht funktionieren. Hier mal der Quellcode:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure EncryptStream(Source, Dest: TStream; cl:Byte);
var s: string;
    Buffer: TBitmap;
begin
SetLength(s, Source.size);
Source.Read(pChar(s)^, Source.size);
Buffer:=TBitmap.Create;
Buffer:=Encrypt(s, cl);
Buffer.SaveToStream(Dest);
Buffer.Free;
end;

procedure DecryptStream(Source, Dest: TStream; cl:Byte);
var Buffer: TBitmap;
         s: String;
begin
Buffer:=Tbitmap.Create;
Buffer.LoadFromStream(Source);
s:=Decrypt(Buffer, cl);
Buffer.Free;
Dest.Write(s, length(s));
end;


Die Verschlüssel- und Entschlüsselfunktionen funktioieren einwandfrei (getestet), es muss also an diesem Stück Quellcode liegen.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Do 19.01.06 19:13 
Hast du es schon eimal ohne Zeigern probiert? Denn da liegt manchmal eine Fehlerquelle. Wenn man einfache Strings nimmt, muss man noch den Zeiger auf das erste Zeichen setzten (ich weiß nicht, ob dein Zeiger hier auf den 0 oder 1 Byte zeigt, da ja das 0 für die Länge reserviert ist).
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 19.01.06 19:27 
Probier mal:

ausblenden Delphi-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:
procedure EncryptStream(Source, Dest: TStream; cl:Byte);
var
    s: string;
    Buffer: TBitmap;
begin
    SetLength(s, Source.size);
    Source.Read(s[1], Source.size);
    //Buffer:=TBitmap.Create; //Nicht benötigt: Speicherleck!!!
    Buffer:=Encrypt(s, cl);
    try
        Buffer.SaveToStream(Dest);
    finally
        Buffer.Free;
    end;
end;

procedure DecryptStream(Source, Dest: TStream; cl:Byte);
var
    Buffer: TBitmap;
    s: String;
begin
    Buffer:=TBitmap.Create;
    try
        Buffer.LoadFromStream(Source);
        s:=Decrypt(Buffer, cl);
    finally
        Buffer.Free;
    end;
    Dest.Write(s[1], length(s));
end;


Falls er bei s[1] meckert: Einfach ein @ davor ergänzen --> @s[1] ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Slowmo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29

Suse Linux 10.1
Lazarus v.0.9.18
BeitragVerfasst: Do 19.01.06 19:41 
Also das hat leider nichts geändert, die beiden Stream sind am Ende immer nocht nicht die selben...
WASEO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win98, Win2000, WinXP
D6 Prof, D7 Prof
BeitragVerfasst: Do 19.01.06 19:43 
Die Methode mit dem Buffer ist etwas umständlich. Wesentlich einfacher geht's mit TStringStream. Der hat die Eigenschaft DataString, in welcher der gesamte Stream als String abgelegt ist. Den Inhalt ann man dann leicht einem String zuweisen und ver- bzw. entschlüsseln und zu weiteren Zwecken verwenden.

Ansonsten schaumalguckeda:

www.swissdelphicente...showcode.php?id=1268

_________________
Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
Slowmo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 29

Suse Linux 10.1
Lazarus v.0.9.18
BeitragVerfasst: Fr 20.01.06 18:17 
Hat sich inzwischen erledigt, ich steig dabei zwar nich ganz durch, es muss aber am Speichern der Bitmap in einen Stream gelegen haben. Jetzt speicher ich die bitmap einfach in einer Datei und es funktioniert.

Trotzdem: Danke für die Hilfe.