Autor Beitrag
bruce185
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Sa 14.07.07 16:10 
Guten Tag,
ich möchte gerne die Einträge die in der ComboBox1 sind, verschlüsseln und anschließend abspeichern.

Ich habe das mal so probiert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.Button1Click(Sender: TObject);
var
  str: TStringList;
  i: integer;
begin
  str := TstringList.Create;

  str.Text:=ComboBox1.Items.GetText;
  for i:=1 to length(str.GetText) do
    str[i]:=char(23 Xor Ord(str[i]));

  str.SaveToFile('Einstellungen.dat');

  str.Free;
end;


an dieser stelle str[i] erhalte ich fehlermeldung, anscheinend weil ich mit TStringList arbeite.
Wie könnte ich diesen Code umschreiben, damit er richtig funktioniert?

MfG
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 14.07.07 17:02 
Wenn ich mich geradr richtig erinnere fangen Stringlisten bei 0 an und nicht bei 1. Also einfach str[i-1] ;)
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Sa 14.07.07 17:07 
Danke Dir.
Das problerm ist, das str[i] oder str[i-1] vom Compiler nicht akzeptiert wird, also ich kann mein programm garnicht Compilieren, weil dort was fehlt, z.B. str.Count[i], aber so geht das auch nicht.
Woran kann das liegen?

Edit: Sry, an dieser stelle Ord(str[i]) ist der fehler.
Wisst ihr vieleicht, was dort fehlt?

MfG
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 14.07.07 17:16 
Dein Problem war (wie ich gerade erst richtig sehe [vorhin nur überfloegn ;) ]): Du greifst auf die Elemente (Lines) zu und nicht auf den Text.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var
  str: TStringList;
  i: integer;
begin
  str := TstringList.Create;

  str.Text:=ComboBox1.Items.Text;
  for i:=1 to length(str.Text) do str.Text[i]:=char(23 Xor Ord(str.Text[i]));

  str.SaveToFile('Einstellungen.dat');

  str.Free;
end;
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Sa 14.07.07 17:28 
Das geht auch nicht.
Folgende fehlermeldung an stelle char:
ausblenden Delphi-Quelltext
1:
2:
  [Fehler] Unit1.pas(36): Der linken Seite kann nichts zugewiesen werden
  [Fataler Fehler] Project2.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


Nochmal zu meinem problem, ich möchte die Items speichern und nicht den Text von der ComboBox, weil somit nur der Text verschlüsselt wird.
Ich weiss leider nicht, wie das geht.

MfG
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 14.07.07 17:31 
Du meinst jetzt die Eigenschaften von jedem Item, die jedes Item besitzt?

//EDIT: Das würde dir aber nix bringen, denn bei ComboBox=>StringList gehen die extra gesetzten Eigenschaften verloren. Was müsste denn mitgespeichert werden?
bruce185 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

winXP
D7 Ent
BeitragVerfasst: Sa 14.07.07 20:19 
Also, bei nächstem Starten des Programms werde ich ja das von der gespeicherten Datei wieder auslesen und dann entschlüsseln und wieder anzeigen in der ComboBox.

Aber es kommt immer fehlermeldung, wenn ich das was dann im TStringList gespeichert wurde, verschlüsseln möchte und das verschlüsselte abspeichern.
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Sa 14.07.07 20:24 
Also reicht der Text doch...

Um die Items brauchst du dich nicht kümmern, das macht Delphi von alleine (Zeilenumbruch = nächstes Item) ;).

Folgendes Funktioniert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: integer;
  Text: String;
begin
  ComboBox1.Items.Text:='blubb'#1310'blubb2';
  Text:=ComboBox1.Items.Text;
  for i:=1 to length(Text) do Text[i]:=char(23 Xor Ord(Text[i]));
  ShowMessage(Text);

  //str.SaveToFile('Einstellungen.dat'); <-- hier nen FileStream verwenden
end;