Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Text wird im Textdokument in der falschen Form gespeichert (https://www.delphipraxis.net/109001-text-wird-im-textdokument-der-falschen-form-gespeichert.html)

Coder1990 22. Feb 2008 15:36


Text wird im Textdokument in der falschen Form gespeichert
 
Seas,
ich habe ein Programm geschrieben dass Passwörter abspeichern soll
dieses System benutze ich um AllPW (listbox mit Passwörtern) und PWInfoData (Array of Array of String) abzuspeichern

Delphi-Quellcode:
var
i:integer;
k: integer;
Temp1,Temp2,line:String;
begin
AssignFile(Haupt.Data,ExtractFilePath(Application.ExeName)+'PWDATA.PW');
rewrite(Data);
i:=0;
k:=0;
repeat
WriteLn(Haupt.Data,Code(AllPW.Items[i],CodeFak));
repeat
WriteLn(Haupt.Data,Code('ÿ'+PWInfoData[i][k],CodeFak));
k:=k+1;
until PWInfoData[i][k]='';
i:=i+1;
until i>=AllPW.items.Count-1;
closeFile(Haupt.Data);
Eigentlich sollte das dann so ausgegeben werden (im Dokument):

Passwort1
ÿInfo1
ÿInfo2
ÿInfo3
Passwort2
ÿInfo1
ÿInfo2
...

aber es wird eher so ausgegeben

Passwort1
Passwort1ÿInfo1
Passwort1ÿInfo1ÿInfo2 .. usw.

was muss ich ändern damit das funkt?

Zitat:

//edit: ich möchte hiermit auf mein anderes Problem verweißen Problem

messie 22. Feb 2008 21:07

Re: Text wird im Textdokument in der falschen Form gespeiche
 
Deinen Einträgen fehlen die Zeilenumbrüche. Writeln kann die nur bei reinen Textdateien (var File : Text;) automatisch schreiben. Hast Du das genau so deklariert? Wenn nicht, schreibst Du eine binäre Datei, dann musst du die Zeilenumbrüche ($0D$0A) jedesmal gesondert an Deinen String anhängen.

Übrigens wäre es hilfreich, wenn Du Deinen Quelltext durch sinnvolles Einrücken etwas übersichtlicher machen würdest:
Delphi-Quellcode:
var
  i:integer;
  k: integer;
  Temp1,Temp2,line:String;
begin
  AssignFile(Haupt.Data,ExtractFilePath(Application.ExeName)+'PWDATA.PW');
  rewrite(Data);
  i:=0;
  k:=0;
  repeat
    WriteLn(Haupt.Data,Code(AllPW.Items[i],CodeFak));
    repeat
      WriteLn(Haupt.Data,Code('ÿ'+PWInfoData[i][k],CodeFak));
      k:=k+1;
    until PWInfoData[i][k]='';
    i:=i+1;
  until i>=AllPW.items.Count-1;
  closeFile(Haupt.Data);
end;
Grüße, Messie

Coder1990 22. Feb 2008 21:32

Re: Text wird im Textdokument in der falschen Form gespeiche
 
also meine Datei ist eine Textfile und ich schreibe auch schon vorher was in die datei und da funktionierts... hat das vll was mit der schleife zu tun? und wie wende ich dieses $0D$0A an??

messie 22. Feb 2008 21:52

Re: Text wird im Textdokument in der falschen Form gespeiche
 
Zitat:

Zitat von Coder1990
also meine Datei ist eine Textfile und ich schreibe auch schon vorher was in die datei und da funktionierts... hat das vll was mit der schleife zu tun?

Ich schätze, eher mit dem Inhalt, den Du schreibst. Du musst sicherstellen, dass Du nur ASCII in die Datei schreibst. Wenn Deine Funktion Code() irgendwas anderes ausgibt, könnte das ein Problem werden.
Zitat:

Zitat von Coder1990
und wie wende ich dieses $0D$0A an??

Ich vermute, einfach hinter die Ausgabe hängen. Falls das mit den alten Funktionen nicht geht, dann
Delphi-Quellcode:
WriteLn(Haupt.Data,Code('ÿ'+PWInfoData[i][k],CodeFak)+#10+#13);
[OT]Schieb mal Dein Hauptmenü nach links aus dem Bildschirm und mach es dann breiter. Da könntest Du Deine Komponentenpalette wiederfinden. Jedenfalls habe ich die auch aus dem Bild schieben können und so wieder zurückgeholt[/OT]

Grüße, Messie

Coder1990 22. Feb 2008 22:29

Re: Text wird im Textdokument in der falschen Form gespeiche
 
Zitat:

Zitat von messie
[OT]Schieb mal Dein Hauptmenü nach links aus dem Bildschirm und mach es dann breiter. Da könntest Du Deine Komponentenpalette wiederfinden. Jedenfalls habe ich die auch aus dem Bild schieben können und so wieder zurückgeholt[/OT]

Juhuuu als ich das gemacht habe konnte man einen ganz kleinen Ansatz der Leiste erkennen :-D danke

Hmm zu meinem wahren Problem^^
also irgendwie hat das keinen Umbruch verursacht der hat das glaub ich als string nun hinzugefügt oder so?!

Delphi-Quellcode:
repeat
WriteLn(Haupt.Data,Code(AllPW.Items[i],CodeFak)+#10+#13);
repeat
WriteLn(Haupt.Data,Code('ÿ'+PWInfoData[i][k],CodeFak)+#10+#13);
k:=k+1;

busybyte 22. Feb 2008 22:38

Re: Text wird im Textdokument in der falschen Form gespeiche
 
das liegt an Deiner function Code ,die liefert Schrott zurück

messie 22. Feb 2008 22:59

Re: Text wird im Textdokument in der falschen Form gespeiche
 
Zitat:

Zitat von busybyte
das liegt an Deiner function Code ,die liefert Schrott zurück

Stimmt vermutlich, ausser den Einrückungen sollte der Aufruf auch eher
Delphi-Quellcode:
WriteLn(Haupt.Data,Code('ÿ'+ ->PWInfoData[i,k]<- ,CodeFak)+#10+#13);
lauten. Ich hab' es noch nie probiert, ob die Übergabe in einzelnen Klammern funzt, ist aber nicht üblich.

Grüße, Messie

busybyte 22. Feb 2008 23:45

Re: Text wird im Textdokument in der falschen Form gespeiche
 
Das liegt doch nur daran, das der Ausgabestring der Function, oder ein String in der Codierfunktion nicht gelöscht wird,
sondern noch den Wert des vorherigen Aufrufes enthält.
//edit
Es liegt vermutlich nicht an dem Aufruf von Code(... sondern drinnen in deiner geheimnissvollen Funktion Code,
es sei denn die Parameter würden schon vor der Übergabe an Code nicht stimmen.

Coder1990 23. Feb 2008 10:42

Re: Text wird im Textdokument in der falschen Form gespeiche
 
hmm ich weiß jetzt selbst nicht woran es lag, ich hab jetzt ein bisschen rumprobiert (an "Code" lag es nicht weil da wurde immer der String reseted) z.b. war "Code" vorher auf repeat basis und jetzt auf for basis usw. viele kleinigkeiten... jetzt geht eigentlich alles bloß gibt es noch ein problem dass für das zweite passwort nicht alle infos gespeichert werden...
achja das mit der [][] Klammer geht scheinbar ich habs ausversehen so geschrieben und es funzt^^

Coder1990 25. Feb 2008 16:15

Re: Text wird im Textdokument in der falschen Form gespeiche
 
Gibts noch ideen?^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz