10. oktober 2003 - 13:39
Der er
19 kommentarer og 1 løsning
Skrive videre på textfil
Hvordan skriver jeg videre på en eksisterende textfil. Åbne filen Gå til slutningen af filen Skrive nogle linier Lukke filen Det er "Gå til slutningen af filen" der er problemet. Bemærk: Det er en textfil.
Annonceindlæg fra Computerworld
10. oktober 2003 - 13:48
#2
function AppendOrWriteTextToFile(FileName: TFilename; WriteText: string): Boolean; var f: Textfile; begin Result := False; AssignFile(f, FileName); try if FileExists(FileName) = False then Rewrite(f) else begin Reset(f); Append(f); end; Writeln(f, WriteText); Result := True; finally CloseFile(f); end; end; procedure TForm1.Button1Click(Sender: TObject); begin AppendOrWriteTextToFile('c:\test.txt', Edit1.Text) end; Snowball
10. oktober 2003 - 13:50
#3
Hvis filen allerede findes, så tilføjes det der står i Edit1 bare i bunden af filen. Findes filen ikke i forvejen, så opretter den filen og tilføjer det der står i Edit1. Snowball
10. oktober 2003 - 13:56
#4
Brug TStringList
10. oktober 2003 - 13:56
#5
Det er mange måder at gøre det på, også denne: var FileName, S: String; FStream: TFileStream; begin S := ' Hest!'; FileName := 'c:\test.txt'; FStream := TFileStream.Create(FileName, fmOpenReadWrite); try FStream.Position := FStream.Size; FStream.Write(S[1], Length(S)); finally FStream.Free; end; end;
10. oktober 2003 - 13:58
#6
Jens -> Det kommer an på om man vil tilføje linjer, eller om man bare vil tilføje noget tekst til den nederste linje... Men ellers: var SList: TStringList; FileName: String; begin FileName := 'c:\test.txt'; SList := TStringList.Create; try if FileExists(FileName) then SList.LoadFromFile(FileName); SList.Text := SList.Text + ' Hest!'; SList.SaveToFile(FileName); finally SList.Free; end; end;
10. oktober 2003 - 14:07
#7
Hvis du vælger at bruge TFileStream, så brug denne i stedet, der er ingen grund til at åbne filen til læsning: var FileName, S: String; FStream: TFileStream; begin S := ' Hest!'; FileName := 'c:\test.txt'; FStream := TFileStream.Create(FileName, fmOpenWrite ); try FStream.Position := FStream.Size; FStream.Write(S[1], Length(S)); finally FStream.Free; end; end;
10. oktober 2003 - 14:32
#8
Den her laver også en ny fil, hvis ikke den findes: function AddStringToFile(FileName, S: String): Integer; var FStream: TFileStream; begin Result := 0; try if FileExists(FileName) then FStream := TFileStream.Create(FileName, fmOpenWrite) else FStream := TFileStream.Create(FileName, fmCreate); except Result := 1; Exit; end; try FStream.Position := FStream.Size; if FStream.Write(S[1], Length(S)) <> Length(S) then begin Result := 2; Exit; end; finally FStream.Free end; end; procedure TForm1.Button1Click(Sender: TObject); begin if AddStringToFile('c:\test.txt', ' Hest2!') <> 0 then ShowMessage('Fil-fejl!'); end;
10. oktober 2003 - 14:37
#9
Den her er mere overskuelig: function AddStringToFile(FileName, S: String): Boolean; var FStream: TFileStream; begin Result := false; if FileExists(FileName) then FStream := TFileStream.Create(FileName, fmOpenWrite) else FStream := TFileStream.Create(FileName, fmCreate); if FStream <> nil then try FStream.Position := FStream.Size; Result := FStream.Write(S[1], Length(S)) = Length(S); finally FStream.Free end; end; procedure TForm1.Button1Click(Sender: TObject); begin if not AddStringToFile('c:\test.txt', ' Hest2!') then ShowMessage('Fil-fejl!'); end;
12. oktober 2003 - 19:14
#10
Tak for jeres råd, problemet er løst nu. //PZ
12. oktober 2003 - 19:20
#11
Du kunne ikke bruge nogle af svarene?
12. oktober 2003 - 19:24
#12
Jo, jeg brugte Append, jeg ved ikke helt hvad der gik galt, det er nok fordi det er en tekstfil og den metode jeg normalt benytter til "file of record" ikke virker. //PZ
12. oktober 2003 - 19:28
#13
Du har altså brugt nogle af de svar der er kommet her. Hvorfor har du så afvist Snowballs svar?
12. oktober 2003 - 19:33
#14
På grund af en fejl 40. Jeg prøver igen hvis det er muligt !!! //PZ
12. oktober 2003 - 19:38
#15
Det er det ikke nu, men du kan få dem, hvis løsning du brugte, til at lægge et svar, og så bliver det muligt :-)
12. oktober 2003 - 19:44
#16
hejhej var først med det "rigtige" svar, så læg et svar igen så giver jeg gerne point. //PZ
12. oktober 2003 - 20:55
#17
pz: Øh, først skriver du at det var en fejl du afviste mit svar, og derefter vil du give hejhej point'ene. Kan du bestemme dig !? ;) Snowball
Slettet bruger
13. oktober 2003 - 09:11
#18
Svar :)
15. oktober 2003 - 21:33
#19
hejhej skal lægge et svar, ikke kommentar, for at jeg kan tildele point !!!
Slettet bruger
16. oktober 2003 - 10:32
#20
Ups :)
Kurser inden for grundlæggende programmering