AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeilenweise in Datei Schreiben

Ein Thema von Evian · begonnen am 1. Nov 2005 · letzter Beitrag vom 2. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#1

Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:03
Hallo Zusammen,

ich möchte in einer Datei die ersten beiden Zeilen mit bestimmten Strings überschreiben. Ich dachte, das geht so:

Delphi-Quellcode:
assignfile(f,filename);
reset(f);
append(f);
for i := 0 to 1 DO
begin
  writeln(f,neueStrings[i]);
end;
closefile(f);
aber er hängt die Strings einfach hinten an die Datei an. Wie genau überschreibe ich eine Zeile?!

gruß

Evian
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:06
Append; setzt die Einfügemarke automatisch ans Ende der Datei. Tu das raus.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#3

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:10
mh.. das ist mir echt peinlich, aber ich habe seid der Schule nicht mehr Zeileweise gelsen und geschrieben, mit den Methoden von den einzelnen Listen in Delphi war mir der Zugriff immer lieber, da so schön einfach. Diesmal sind die Dateien zu groß um sie komplett mit readfromfile() zu laden.

Tscha und was soll ich sagen, wenn ich append weg lasse, bekomme ich einen E/A-Fehler 105.

Edit: ich schätze ich muss die Einfüge marke dann selber setzen, aber finde hier im Forum nicht wie.. *g*
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:12
Hmmm... Seltsam... Ich habe Append noch nie gebraucht. Was genau ist denn ein E/A 105?

EDIT: Was ist dir peinlich? Das ein Totalnewb deine Frage beantwortet hat?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#5

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:15
Zitat von 3_of_8:
EDIT: Was ist dir peinlich? Das ein Totalnewb deine Frage beantwortet hat?
Woher soll ich wissen, dass Du ein newbie bist?! Und außerdem spielt das für mich keine Rolle, denn wenn Du mir hilfst das Problem zu lösen freue ich mich um so mehr. Ich programmiere nur schon fast 4 Jahre mit Delphi und die Sache ist eigendlich schon recht rudimentär... habs aber einfach vergessen, wie's geht


der Fehler sagt follgendes:

"Datei wurde nicht für Ausgabe geöffnet" -> Wird von Write oder Writeln für eine Textdatei gemeldet, wenn keine Konsolenanwendung generiert wird.

ich schätze, ich muss die Einfüge marke noch auf die erste Zeile setzen, aber wie?!
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:17
Zitat von 3_of_8:
Was genau ist denn ein E/A 105?
delphi-Hilfe:
Zitat:
105 File not open for output Reported by Write or Writeln on a text file if you do not generate a Console application.
Trifft davon was zu:
Zitat:
Reset opens the existing external file with the name assigned to F using the mode specified by the global FileMode variable. An error results if no existing external file of the given name exists or if the file can’t be opened with the current file mode. If F is already open, it is first closed and then reopened. The current file position is set to the beginning of the file.
Und was passiert hier bei:
Delphi-Quellcode:
AssignFile(f,filename);
{$I-}
Reset(f);
if IOResult = 0 then
begin
  for i := 0 to 1 DO
  begin
    WriteLn(f,neueStrings[i]);
  end;
  CloseFile(f);
end
else
  ShowMessage(SysErrorMessage(GetLastError));
{$I+}
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#7

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:24
mh.. also ich lese erst die ersten beiden ZEilen aus, schreibe sie dann in ein Memo und schreibe sie dann wieder Rückwerts ind die Datei. Also zumindest habe ich das vor .

Bei Deinem Code gibt es im ersten durchlauf keinen Fehler, aber es wird auch nicht in die Datei geschrieben... wenn ich direkt noch mal lesen will gibt es wieder den E/A-Fehler:

hier mal der Testcode:

Delphi-Quellcode:
function reverse(s : STRING): STRING;
VAR
i : Integer;
BEGIN
  for i := length(s) Downto 0 do
  BEGIN
    result := result + s[i];
  END;
END;

function getdata(filename:string):TStrings;
var f:text;
    s:string;
    i:integer;
begin
result:=TStringList.create;
assignfile(f,filename);
reset(f);
for i := 0 to 1 DO
begin
  readln(f,s);
  result.add(s);
end;
closefile(f);
end;

procedure setData(filename:string);
var f:text;
    s:string;
    i:integer;
begin
AssignFile(f,filename);
{$I-}
Reset(f);
if IOResult = 0 then
begin
  for i := 0 to 1 DO
  begin
    WriteLn(f,reverse(Form1.memo1.lines[i]));
  end;
  CloseFile(f);
end
else
  ShowMessage(SysErrorMessage(GetLastError));
{$I+}
end;

procedure TForm1.Button1Click(Sender: TObject);
BEGIN
  Memo1.Lines.AddStrings(getdata('c:/TCPCheckResult.txt'));
  setData('c:/TCPCheckResult.txt');
END;
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#8

Re: Zeilenweise in Datei Schreiben

  Alt 1. Nov 2005, 23:59
ok, wenn man in einer Datei Daten Überschreiben will, dann muss man rewrite(); nutzen..., aber dann wird die Datei auch komplett neu geschrieben. ISt es nicht möglich einfach nur bestimmte Zeilen einer Datei zu überschreiben?!
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Zeilenweise in Datei Schreiben

  Alt 2. Nov 2005, 00:01
Aber dass der PathSeparator unter Windows eigentlich der BackSlash ist weißt du?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Evian
Evian

Registriert seit: 10. Apr 2003
Ort: Berlin
485 Beiträge
 
Delphi 6 Professional
 
#10

Re: Zeilenweise in Datei Schreiben

  Alt 2. Nov 2005, 00:18
Zitat von Luckie:
Aber dass der PathSeparator unter Windows eigentlich der BackSlash ist weißt du?
Mh.. das hört sich ein wenig vorwurfsvoll an.
Also ich wusste es nicht und ich gebe zu, dass ich in dem Bereich noch weniger Ahnung habe, als ich ohne hin schon dachte, aber ganz ehrlich ich habe keine Ahnung, wie mir diese Information hier weiter helfen soll. Könntest Du das bitte erläutern.

Gruß

Evian

EDIT: Ok ´jetzt hab ich erst gerafft, was Du meinst. Entschuldige manchmal sieht man den Wald vor lauter Bäumen nicht.
-> www.Phillsoft.de

Ich bin nun Mathematiker, aber meine Freundin bleibt trotzdem unberechenbar!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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