| Autor |
Beitrag |
Unzi
      
Beiträge: 57
|
Verfasst: Mi 20.07.05 10:40
Hallo,
ich erstelle mit folgender Prozedur eine Datei:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure SaveToFile(filename,text:String); var Datei:file of char;buf:char;i:integer; begin AssignFile(datei,filename); Rewrite(datei); for i:=1 to length(text) do begin buf:=text[i]; Write(datei,buf); end; CloseFile(datei); end; |
Normalerweise geht sie, aber wenn ich in irgendeiner Weise schonmal auf das Dateisystem zugegriffen habe, gibt es erst den I/O-Error 183, und wenn ich es dann nochmal versuche, kriege ich "File not found". Hat jemand eine Idee, woran das liegen kann?
Danke!
Unzi
|
|
sango
      
Beiträge: 236
WinXP Home
Delphi 2005 Pro
|
Verfasst: Mi 20.07.05 10:53
hast die datei vielleicht noch irgendwo geöffnet`?
versuch mal
Quelltext
_________________ Never read the Off-Topic
|
|
jaevencooler
      
Beiträge: 166
Erhaltene Danke: 6
MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
|
Verfasst: Mi 20.07.05 10:55
Moin, Moin,
hmmmm, warum da jetzt ein fehler auftritt weiß ich nicht, aber so funktioniert es auf jeden Fall:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| var aTextFile : TextFile;
try AssignFile(aTextFile,'DateiName'); Rewrite(aTextFile); except CloseFile(aTextFile); end;
Writeln(aTextFile, 'Dein Text oder String' ); Flush(aTextFile); CloseFile(aTextFile); |
So funktioniert es eigentlich gut. Du solltest nur darauf achten das Du auf dem Ziellaufwerk auch existierende Dateien überschreiben darfst. Ein Problem das insbesondere auf Linux Servern auftreten kann.
Beste Grüße
Michael
Moderiert von Motzi: Code- durch Delphi-Tags ersetzt.
_________________ Wissen ist Macht, nichts wissen macht auch nichts...
|
|
jaevencooler
      
Beiträge: 166
Erhaltene Danke: 6
MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
|
Verfasst: Mi 20.07.05 11:02
Moin, Moin,
sango hat folgendes geschrieben: | hast die datei vielleicht noch irgendwo geöffnet`?
versuch mal
Quelltext |
das musst Du mir mal erklären woher Du die Eigenschaft datei.free bei einem Typ file of char nimmst ?
Beste Grüße
Michael
_________________ Wissen ist Macht, nichts wissen macht auch nichts...
|
|
Unzi 
      
Beiträge: 57
|
Verfasst: Mi 20.07.05 11:22
Ich benutze jetzt folgende Prozedur:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure SaveToFile(filename,text:String); var Datei:TextFile; begin FileMode:=fmOpenWrite+fmShareDenyWrite; try AssignFile(datei,filename); Rewrite(datei); except CloseFile(datei); exit; end; Write(datei,text); Flush(datei); CloseFile(datei); end; |
Und jetzt kommt ausnahmslos nur noch Error 183, auch wenn ich vorher nicht mit diesem Programm zugegriffen habe. Die Datei wird zwar immer erstellt, bleibt aber aufgrund des Fehlers leer. 183 bedeutet ja Datei vorhanden, aber rewrite ist es doch egal, obs die datei schon gibt oder?
|
|
Harry M.
      
Beiträge: 754
Win 2000, XP
D2005
|
Verfasst: Mi 20.07.05 11:24
Warum immer sokomliziert??
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); Var Datei:System.Text; begin System.Assign(Datei, 'Datei.dat'); System.Rewrite(Datei); try finally System.Close(Datei); end; end; |
_________________ Gruß Harry
Et spes me per dies sine te ducat et amor me ferat, si dolor spem tollit.
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 20.07.05 11:25
Unzi hat folgendes geschrieben: |
Delphi-Quelltext 1:
| FileMode:=fmOpenWrite+fmShareDenyWrite; | |
auf diesen wert wird nie zugegriffen
nimm die prozedur hier www.delphi-forum.de/...45380&highlight=
ganz unten mit DoAppend true oder false kannst du angeben ob bei der datei was angehängt werden soll
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
maxk
      
Beiträge: 1696
Erhaltene Danke: 1
Win XP, Debian Lenny
Delphi 6 Personal
|
Verfasst: Mi 20.07.05 12:51
Versuchs doch mal so:
ungetesteter Sourcecode: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure SaveToFile(filename,text:String); var Datei:TextFile; begin AssignFile(datei,filename); {$I-} Rewrite(datei); {$I+} if IOResult=0 then begin Write(Datei, Text); Flush(Data); CloseFile(Data); end else ShowMessage('Datei kann nicht geöffnet werden!'); end; |
Gruß,
maxk
PS: Hast du mal versucht, die Datei zu löschen bzw. den Rechner neuzustarten (ja ich weiss), damit die Datei mit Sicherheit nicht gesperrt ist. Rewrite & Co. stellen sich bei einigen Dateiattributen manchmal ein bisschen blöd an, so dass evtl. noch ein Setzen der Attribute nötig wird.
_________________ Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
|
|
Unzi 
      
Beiträge: 57
|
Verfasst: Mi 20.07.05 13:43
Sorry dass ich euch so lang auf Trab gehalten hab, der Fehler in meinem Programm lag ganz woanders, und Delphi hatte das dann irgendwie aufgestaut, jetzt gehts wieder. Vielen Dank trotzdem, da haben wir wenigstens mal ne schöne Sammlung von Dateischreibe-Funktionen.
Zuletzt bearbeitet von Unzi am Sa 27.08.05 14:13, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mi 20.07.05 14:50
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Mi 20.07.05 15:00
interessant, auf die idee dass system.pas globale variablen  anbietet, wäre ich jetzt nie gekommen
soviel zum thema "errare humanum est"
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 21.07.05 01:32
Nuir mal so als Randbemerkung für alle die hier nach einer Lösung suchen:
maxk hat in diesem Posting: www.delphi-forum.de/....php?p=274438#274438 übrigens die einzig korrekte Vorgehensweise gepostet mit dem Auswerten von IOResult usw.
|
|
|