Autor Beitrag
Herr Bananerama
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 28.12.07 19:31 
Hi,
ich wollte grad mal versuchen einen text aus einer memo in eine .txt Datei Speichern. Resultat: es klappt nicht ... auch wenn kein Fehler auftritt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.SpeichernClick(Sender: TObject);
var
  f : TextFile;
  i : Integer;
begin
  AssignFile(f, 'c:\Datei.txt');
  {$i-} Append(f); {$i+}
  if IOResult <> 0  then begin
    ShowMessage('Fehler ...'); Exit
  end;
  for i := 1 To  Memo1.Lines.Count Do
    Writeln(f, Memo1.Lines[i]);
  CloseFile(f)
end;


Danke schonmal im voraus
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 28.12.07 19:38 
Warum benutzt du nicht SaveToFile der Memo-Komponente?

_________________
We are, we were and will not be.
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Fr 28.12.07 19:40 
beginnen die Lines nicht bei 0 ?
wenn du nur eine zeile text hast wirds in dem fall nix

ausblenden Delphi-Quelltext
1:
Writeln(f, Memo1.Lines[i-1]);					

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 28.12.07 19:51 
user profile iconGausi hat folgendes geschrieben:
Warum benutzt du nicht SaveToFile der Memo-Komponente?


weil ich nicht überschreiben sondern anhängen möchte
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 28.12.07 19:53 
user profile iconDrRzf hat folgendes geschrieben:
beginnen die Lines nicht bei 0 ?
wenn du nur eine zeile text hast wirds in dem fall nix

ausblenden Delphi-Quelltext
1:
Writeln(f, Memo1.Lines[i-1]);					


hab ich auch schon probiert .... klappt net
Bethsoftfan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Win XP, Linux OpenSuSE 10.3 mit Compiz Fusion :cool:
Delphi 2007 Prof. Delphi 5
BeitragVerfasst: Fr 28.12.07 20:08 
Hallo,

Vieleicht den Memo.Lines einen String zuweisen, und dann den String in die Datei schreiben ;)

Edit:

wäre dann:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
s1 : string;
...
begin
...
s1 := Memo1.Lines;
WriteLn(f, s1);
...


Zuletzt bearbeitet von Bethsoftfan am Fr 28.12.07 20:30, insgesamt 1-mal bearbeitet
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 28.12.07 20:21 
user profile iconBethsoftfan hat folgendes geschrieben:

var
s1 : Memo1.Lines;


Memo1.Lines ist kein Datentyp. Wenn dann müsste man machen s1: String; aber danke :wink: klappt aber auch net
Bethsoftfan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Win XP, Linux OpenSuSE 10.3 mit Compiz Fusion :cool:
Delphi 2007 Prof. Delphi 5
BeitragVerfasst: Fr 28.12.07 20:29 
arrg is mir eben auch aufgefallen, in meinem Code wäre mir das nicht passirt! ;)

naja wollte ich auch korrigieren, aber leider 2min zuspät!

Also so ist richtig!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.SpeichernClick(Sender: TObject);  
var  
  f : TextFile;  
  i : Integer;
 s1 : string; 
begin
  s1:= Memo1.Lines;  
  AssignFile(f, 'c:\Datei.txt');  
  {$i-} Append(f); {$i+}  
  if IOResult <> 0  then begin  
    ShowMessage('Fehler ...'); Exit  
  end;  
  for i := 1 To  Memo1.Lines.Count Do  
    Writeln(f, s1);  
  CloseFile(f)
end;


so bis dann(war eben schon bei der Initalisierung, was s1 ist und hab es ausversehen in var geschrieben
:oops: :oops:

tja bringt aber nichts! schade!

Also bis dann Bethsoftfan!

haste mal nur mit write + zeilenumbruch(entspricht writeLn) probiert?
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Fr 28.12.07 20:38 
muss das nicht

s1 := memo1.lines.TEXT

heissen ??

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 28.12.07 20:49 
user profile iconBethsoftfan hat folgendes geschrieben:
arrg is mir eben auch aufgefallen, in meinem Code wäre mir das nicht passirt! ;)

naja wollte ich auch korrigieren, aber leider 2min zuspät!

Also so ist richtig!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.SpeichernClick(Sender: TObject);  
var  
  f : TextFile;  
  i : Integer;
 s1 : string; 
begin
 
  AssignFile(f, 'c:\Datei.txt');  
  {$i-} Append(f); {$i+}  
  if IOResult <> 0  then begin  
    ShowMessage('Fehler ...'); Exit  
  end;  
  for i := 1 To  Memo1.Lines.Count Do   
    s1:= Memo1.Lines[i-1];  // du musst doch auch schreiben welche zeile oder?! 
    Writeln(f, s1);  
  CloseFile(f)
end;


so bis dann(war eben schon bei der Initalisierung, was s1 ist und hab es ausversehen in var geschrieben
:oops: :oops:

tja bringt aber nichts! schade!

Also bis dann Bethsoftfan!

haste mal nur mit write + zeilenumbruch(entspricht writeLn) probiert?


ist ja net schlimm ... schreibfehler passieren immer ... bin ja froh wenn mir jemand antwortet naja ... allerdings müsstest du deinen text den du jetzt geschrieben hast auchumändern ... s.o.

mit write hab ichs jetzt auch versucht klappt auch nicht... also meine textdatei hab ich übrigens mit dem Editor gemacht und heißt datei.txt ... vielleicht liegt es ja daran, glaub ich aber eher net ... und wenn ich kompiliere , in die memo einen text reinschreibe und auf den speicherbutton drücke steht danach einfach nichts in der textdatei
Bethsoftfan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Win XP, Linux OpenSuSE 10.3 mit Compiz Fusion :cool:
Delphi 2007 Prof. Delphi 5
BeitragVerfasst: Fr 28.12.07 21:28 
Versuche mal nur aus Testzwecken, die Datei in .ini umzubenennen!

vieleicht geht es dann?

Idee: :think:
dann bräuchte man ja für jede Zeile 1 String. Lösung : Array!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
  
procedure TForm1.SpeichernClick(Sender: TObject);    
var    
  f : TextFile;    
  i : Integer;  
 s1 : Array [1..300] of string;   
begin  
   
  AssignFile(f, 'c:\Datei.txt');    
  {$i-} Append(f); {$i+}    
  if IOResult <> 0  then begin    
    ShowMessage('Fehler ...'); Exit    
  end;    
  for i := 1 To  Memo1.Lines.Count Do   //Kommentar von Bethsoftfan :
                                        //nimmt der [i0..299] an?  
    s1[1..300]:= Memo1.Lines[i0..299];  // du musst doch auch schreiben welche   
                                        //zeile oder?!   
Writeln(f, s1);    
CloseFile(f)  
end;


Edit: Juhu mein 16 Post, bin jetzt "volljährig"(hab Geschenke)!


Zuletzt bearbeitet von Bethsoftfan am Fr 28.12.07 21:38, insgesamt 2-mal bearbeitet
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Fr 28.12.07 21:33 
Nur mal kurz zum Verständnis: Du willst zu ner Textdatei noch mehr Text hinzufügen, der sich in nem Memo befindet?
Dann hier mal Quick&Dirrty, is zwar sehr schlimm, aber geht :wink: :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.SpeichernClick(Sender: TObject);  
var  
 tempstringlist:TStringlist;
begin
 tempstringlist:=TStringlist.Create;
 try
 tempstringlist.Clear;
 tempstringlist.LoadFromFile('C:\datei.txt');
 tempstringlist.Text:=tempstringlist.Text+memo1.Text;
 tempstringlist.SaveToFile('C:\datei.txt');
 finally
 tempstringlist.Free;
 end;

end;


Edit: zu dem anderen Quelltext. Ich würde es so machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.SpeichernClick(Sender: TObject);  
var  
  f : TextFile;  
  i : Integer;
 s1 : string; 
begin
 
  AssignFile(f, 'c:\Datei.txt');  
  {$i-} Append(f); {$i+}  
  if IOResult <> 0  then begin  
    ShowMessage('Fehler ...'); Exit  
  end;  
  for i := 0 To  Memo1.Lines.Count-1 Do
  begin   
    s1:= Memo1.Lines[i];  // du musst doch auch schreiben welche zeile oder?! 
    Writeln(f, s1);  
  end;
  CloseFile(f)
end;
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Fr 28.12.07 22:02 
@ Regan
ich wollte eigenli aus einem Buch etwas testen und gucken ob das klappt ... es geht mir nicht darum einfach den inhalt aus der memo zu speichern, sonder das ganze mit AssigneFile etc. zu machen. Sry hätte ich vtl. schon früher schreiben sollen. Ich teste trotzdem mal deinen vorschlag. Wäre aber sehr nett von euch wenn ihr mir sagen könntet was konkret an meinem beispiel falsch ist oder warum der das einfach nicht speichert. Danke
DrRzf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260

Win XP Prof
D7 Enterprise
BeitragVerfasst: Fr 28.12.07 22:39 
@Regan
das begin end hat BethSoftfan versaut ^^
und dein beispiel entspricht dann dem was ich im zweiten post schon angesprochen habe.
Ich habe halt nur von i eins abgezogen, während deine schleife bereits eins früher startet.

_________________
rein statistisch gesehen darf man keiner statistik trauen die man nicht selbst gefälscht hat.
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Sa 29.12.07 10:15 
user profile iconDrRzf hat folgendes geschrieben:
@Regan
das begin end hat BethSoftfan versaut ^^
und dein beispiel entspricht dann dem was ich im zweiten post schon angesprochen habe.
Ich habe halt nur von i eins abgezogen, während deine schleife bereits eins früher startet.


Sorry, ich hab beim verbessern das mit dem begin und end vergessen( auf meine kappe nehm), im code hatte ich das aber schon richtig. Hier nochmal mit allen verbesserungen den Delphi-Code. Ich verstehe nicht warum das nicht klappt!!!! Es wäre vielleicht nett wenn ihr dass an einem eigenen Programm ausprobieren könntet... Geht ja schnelle: Memo auf n Formular gelegt Button drauf geschmissen und mit Copy und Paste Quellentext erstellt. Vielleicht bin ich ja einfach nur doof oder mein windows und bei euch klappt das. Wäre aufjedenfall super nett. Danke

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.SpeichernClick(Sender: TObject);
var
  f : TextFile;
  i : Integer;
  s : String;
begin
  AssignFile(f, 'c:\Datei.txt');
  {$i-} Append(f); {$i+}
  if IOResult <> 0  then begin
    ShowMessage('Fehler ...'); Exit
  end;
  for i := 1 To  Memo1.Lines.Count Do begin
    s := Memo1.Lines[i-1];
    Writeln(f, s)
  end;
  CloseFile(f)
end;
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Sa 29.12.07 10:52 
Hi,

also bei mir (D2005PE) funktioniert dein Code, vielleicht einfach nochmal neu compilieren (STRG+F9).

Gruß
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Sa 29.12.07 11:06 
user profile iconSaubäär hat folgendes geschrieben:
Hi,

also bei mir (D2005PE) funktioniert dein Code, vielleicht einfach nochmal neu compilieren (STRG+F9).

Gruß

bei mir funktionierts ja auch ... da steht nachher nur nichts in der text datei drinne ;P. naja ... dann nehme ich das mal so hin ^^
Saubäär
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 376



BeitragVerfasst: Sa 29.12.07 11:09 
Hi,

mit funktionieren meinte ich schon, dass der Inhalt des Memos in der Datei drin steht...


Gruß
Herr Bananerama Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 130



BeitragVerfasst: Sa 29.12.07 11:13 
user profile iconSaubäär hat folgendes geschrieben:
Hi,

mit funktionieren meinte ich schon, dass der Inhalt des Memos in der Datei drin steht...


Gruß


jo ok dann liegst wohl an mir oder meinem Pc ;) ich versuchs mal am Pc an der schule wenns wieder losgeht.