| Autor |
Beitrag |
fdbfgh
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 18:14
Hallo Ihr,
ich hab ein Problem:
Ich lese die Lines eines Memofelds in 24 Variablen ein.(umständlich aber okay).
Das speichere ich nun in eine Datei und versende sie als Datei. Alles kein Problem.
Doch die .txt Datei in die das Memofeld gespeichert wird, ist total unübersichtlich...
Es wird alles in die oberste Zeile in der .txt gespeichert, nur ich würde das sehr gerne untereinander stehen haben.
Nur wie?
Also anstatt:
Hallo. Ich heiße Peter. Wohne in München.
------------------------------
Hallo.
Ich heiße Peter.
Wohne in München.
Könnte mir bitte jemand dabei helfen?
Die Lines des Memos sind so eingelesen:
a1 := Memo.Lines[0]
b1 := Memo.Lines[1]
und so weiter...
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 18:18
Hallo und
Also erstens: Beim Speichern musst du die Zeilenumbrüche mit speichern.
Zweitens: Ich glaube du hast vergessen dir die Möglichkeiten eines Memos einmal anzuschauen. Wie wäre es mit: Delphi-Quelltext 1:
| MemoX.Lines.SaveToFile(...); |
Für diesen Beitrag haben gedankt: fdbfgh
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: So 03.10.10 18:22
Wie speicherst Du die Variablen in der Datei?
Über Write(Ln)? oder Memo.Lines.SaveTofile?
Bei der Savetofile-Prozedur werden die in einzelnen Zeilen gespeichert, also nicht so, wie Du beschreibst. Ich habe es getestet.
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 18:22
jaenicke hat folgendes geschrieben : | | Also erstens: Beim Speichern musst du die Zeilenumbrüche mit speichern. |
Ähm, okay. Erscheint mir logisch. Doch muss ich zugeben, dass ich nicht weiß, wie ich das hinbekomme...
Und das mit den a1,b1, etc. muss schon so sein  Ich muss auf die nochmal zugreifen...
Moderiert von Narses: Zitat gekürzt.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 18:24
fdbfgh hat folgendes geschrieben : | Und das mit den a1,b1, etc. muss schon so sein Ich muss auf die nochmal zugreifen... |
Dann nimm am besten eine TStringList zum Zwischenspeichern. Du kannst auch direkt mit den Zeilen arbeiten.
Oder nacheinander mit einer Variable.
Wie speicherst du denn jetzt?
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: So 03.10.10 18:27
Dann nimm doch besser einen Array von Variablen, dann ist das Speichern der Zeilen in die Variablen einfacher. Aber eigentlich sind ja die Lines von TMemo schon ein Arry. Warum also das doppelte Speichern? Und - wie schon gesagt, das Savetofile erledigt das ganze so wie gewünscht. Am besten lädst Du Dir in Deiner Anwendung einen Speicherdialog. Dann wird das Speichern einfacher. s. u.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure Speichern; begin with Savedialog1 do begin if Execute then Memo1.Lines.SaveToFile(Filename); end; end; |
das war's dann schon.
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 18:43
Momentan speichere ich so:
AssignFile(textdatei,'C:\Dokumente und Einstellungen\Administrator\Desktop\Anfrage.txt');
Rewrite(textdatei);
writeln(textdatei,a1, b1,c1,d1,e1,f1,g1,h1, i1, j1, k1, l1, m1, n1, o1, p1, q1, r1, s1, t1, u1, v1, w1, x1, y1, z1);
closefile(Textdatei);
Ich würde das halt auch gerne so beibehalten, da ich ja jetzt auch nicht Delphi-Genie bin.
Das mit Save To File finde ich interessant und werds mir mal anschauen, aber benutzen soll/muss ich das Obere...
TStringList benutze ich wie?
Vielleicht noch eine andere, unwichtigere Frage:
'C:\Dokumente und Einstellungen\Administrator\Desktop\Anfrage.txt'
Wie lasse ich den Benutzer entscheiden wo er speichert?
Liebe Grüße
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 18:45
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 18:47
So Habs jetzt mit SaveToFile gemacht.
Punkt, soll der Lehrer machen was er will. Das ist ja wirklich 100 Mal einfacher
So, und wenn ich jetzt zum Beispiel was aus einem Editfeld noch an den Text dranhängen will mit ner Leerzeile dazwischen?
Kann ich dann writeln noch benutzen?
LG
Danke nochmal!
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 18:51
Du kannst die Zeilen z.B. vor dem Speichern an den Text im Memo anhängen. Mit Lines.Add. Writeln brauchst du bei SaveToFile aber auch gar nicht mehr, was machst du damit denn noch?
Sauberer wäre es natürlich den Text zuerst in eine TStringList zu kopieren und diese dann mit SaveToFile zu speichern.
Du kannst aber auch einfach nach dem Speichern die Datei mit Append statt Rewrite öffnen, dann kannst du mit Writeln Text an die Datei anhängen.
Für diesen Beitrag haben gedankt: fdbfgh
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 18:54
Nun, ich will den Inhalt des Edits ja jetzt nicht in das Memofeld einfügen, sondern allein in die .txt-Datei.
Deswegen will ich da halt noch was dranhängen.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 18:55
Ja, das geht sowohl mit TStringList als auch mit nachträglichem Anhängen via Append.
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 19:07
Okay, ich habe mir gerade Append in der F1-Hilfe durchgelesen.
Der Zeiger springt auf die letzte Zeile...
Nur wie weiß der Befehl denn in welcher Datei er das machen soll bzw. wie sage ich ihm das, wenn ichs ja per SaveDialog mache?
Delphi-Quelltext 1: 2: 3:
| Memo.Lines.SaveToFile(FileName); Append(Filename); --> Das ist falsch, aber Filename.Append geht auch nicht. writeln(FileName, 'Blabla'); |
Irgendwo stehe ich auf dem schlauch, oder sehe den Wald vor lauter Bäumen nicht.
Möglich?
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 19:12
Wie ich schon sagte: Append statt Rewrite in deinem ursprünglichen Code. 
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 19:20
So jetzt verstehe ich nur noch ein wenig Bahnhof
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| with Savedialog1 do begin if Execute then Memo.Lines.SaveToFile(FileName); end;
AssignFile(textdatei,'Filename'); Append(textdatei); writeln(textdatei, 'Hallo'); closefile(Textdatei); |
EInOutError markiert er bei Append.
Jetzt speichert er doch irgendwo die Datei hin. Öffnet sie und soll dann bei writeln noch Hallo reinschreiben.
Where can I find the problem, guys?
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 19:22
Du hast Filename als String angegeben, du versuchst also an die Datei 'Filename' anzuhängen statt an die Datei, deren Name in der Variablen Filename gespeichert ist. 
Für diesen Beitrag haben gedankt: fdbfgh
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 19:28
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 19:29
Dein if gilt aber nur für die folgende Zeile (da du das begin..end vergessen hast), das heißt du versuchst ggf. an eine nicht existierende Datei anzuhängen, wenn der Benutzer im Dialog abbrechen drückt.
|
|
fdbfgh 
Hält's aus hier
Beiträge: 9
|
Verfasst: So 03.10.10 22:36
1.)Wie baue ich denn ein, dass der Benutzer eine Datei : blabla.txt nennen muss?
2.) Wie erstelle ich denn über Delphi einen eigenen Ordner? Jedoch so, dass der Benutzer auswählen kann, wo?
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 03.10.10 22:54
fdbfgh hat folgendes geschrieben : | | 1.)Wie baue ich denn ein, dass der Benutzer eine Datei : blabla.txt nennen muss? |
Hört sich so an als wolltest du nur den Ordner auswählbar machen? Dann zeige den entsprechenden Dialog an, entweder mit der Funktion SelectDirectory oder über den Code hier in der Library.
Aber warum willst du den Dateinamen vorgeben? Üblich ist das ja eher nicht.
fdbfgh hat folgendes geschrieben : | | 2.) Wie erstelle ich denn über Delphi einen eigenen Ordner? Jedoch so, dass der Benutzer auswählen kann, wo? |
In dem Speichern-Dialog gibt es die Möglichkeit. Per Code geht das mit CreateDirectory (wer hätte das gedacht, dass die Funktion heißt wie das was sie macht  ).
Aber: andere Frage, neuer Thread bitte. 
|
|