Autor Beitrag
Danny87
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Mi 04.10.06 15:15 
Hi,

erstmal sorry für den Titel. Wusste nicht wie ichs nennen soll.
Zu meinem Problem:
Ich verschlüssele einen Text in einem Memo (Zeile für Zeile) so:
("key" ist ein String in dem der Codeschlüssel gespeichert ist)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function TfrmMain.Code(sString : string) : string;
var i, j : integer;
    b : byte;
begin
for i:=1 to length(sString) do
  begin
  b := ord(sString[i]);
    for j:=1 to length(key) do
      inc(b,StrToInt(key[j]));
    sString[i] := char(b);
  end;
result := sString;
end;


Funktioniert auch wunderbar. Entschlüsseln funktioniert auch klasse.
Wenn ich nun allerdings den Text im Memo in einer Datei speichere und diese Datei dann wieder
in das Memo lade, dann fehlen einige Zeichen, sodass auch im entschlüsselten Text Zeichen fehlen.
Das ist natürlich nicht optimal.

Meine Frage an euch:
Wisst ihr, was ich machen kann, damit beim Laden oder Speichern der Datei nicht einige Zeichen
"ignoriert" werden?


Gruss
Daniel
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 04.10.06 16:11 
Moin!

Es gibt wahrscheinliche Probleme mit den ASCII-Steuerzeichen (#0..#31), wenn du die Standard-Lade- und -Speichermethoden verwendest.

Also: entweder Zeichenwerte unter 32 vermeiden oder binäre Dateien schreiben/lesen (Suche in: Delphi-Forum, Delphi-Library TFILESTREAM).

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Danny87 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 688

Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
BeitragVerfasst: Mi 04.10.06 22:02 
Ich habs jetzt so versucht.
Klappt auch soweit ganz gut, allerding ignoriert er beim speichern die Returns Oo
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var fs : TFileStream;
    i, j : integer;
    s : string;
begin
fs := TFileStream.Create(sdView1.FileName,fmCreate or fmShareExclusive);
for i:=0 to memView1.Lines.Count -1 do
  begin
  s := memView1.Lines[i];
  for j:=1 to length(s) do
    fs.Write(s[j],length(s[j]));
  SetLength(s,length(s)+1);
  s[length(s)] := #13;
  end;
end;

Was mache ich da falsch?

Gruss
Daniel
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 04.10.06 22:30 
Moin!

Memo-Controls haben natürlich genauso Probleme mit dem Verarbeiten von Zeichen <#32, deshalb ist ein Memo leider ungeeignet, den codierten Text anzuzeigen... :|

Ansatz: Speichere den codierten Text in einem String und gib die einzelnen Bytes als Hex-Zeichen in das Memo aus. Da du die Zeilenumbrüche mit umwandelst, hat die codierte Nachricht keine erkennbaren Zeilenwechsel mehr. ;)

Den codierten Text speicherst und lädst du am Stück aus dem Filestream.

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Mi 04.10.06 22:32 
user profile iconNarses hat folgendes geschrieben:
Memo-Controls haben natürlich genauso Probleme mit dem Verarbeiten von Zeichen <#32, deshalb ist ein Memo leider ungeeignet, den codierten Text anzuzeigen... :|


Sorry Zwischenfrage: TEdits auch?

Gruß alias5000

_________________
Programmers never die, they just GOSUB without RETURN
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 04.10.06 22:34 
Moin!

Yip. :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.