Autor Beitrag
Unzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Mi 20.07.05 10:40 
Hallo,

ich erstelle mit folgender Prozedur eine Datei:

ausblenden 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 236

WinXP Home
Delphi 2005 Pro
BeitragVerfasst: Mi 20.07.05 10:53 
hast die datei vielleicht noch irgendwo geöffnet`?
versuch mal
ausblenden Quelltext
1:
Datei.free;					

_________________
Never read the Off-Topic
jaevencooler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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
BeitragVerfasst: 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:

ausblenden 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); // Wird neu erzeugt, auch wenn schon vorhanden
except
  CloseFile(aTextFile);
end;

Writeln(aTextFile, 'Dein Text oder String' ); // Schreibt den text in die datei
Flush(aTextFile);  // Sicherstellen, daß der Text tatsächlich in die Datei geschrieben wird.
CloseFile(aTextFile); // datei schließen



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 user profile iconMotzi: Code- durch Delphi-Tags ersetzt.

_________________
Wissen ist Macht, nichts wissen macht auch nichts...
jaevencooler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
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
BeitragVerfasst: Mi 20.07.05 11:02 
Moin, Moin,

:autsch:

user profile iconsango hat folgendes geschrieben:
hast die datei vielleicht noch irgendwo geöffnet`?
versuch mal
ausblenden Quelltext
1:
Datei.free;					


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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: Mi 20.07.05 11:22 
Ich benutze jetzt folgende Prozedur:

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754

Win 2000, XP
D2005
BeitragVerfasst: Mi 20.07.05 11:24 
Warum immer sokomliziert??
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 20.07.05 11:25 
user profile iconUnzi hat folgendes geschrieben:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 20.07.05 12:51 
Versuchs doch mal so:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 57



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 20.07.05 14:50 
user profile iconretnyg hat folgendes geschrieben:
user profile iconUnzi hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
FileMode:=fmOpenWrite+fmShareDenyWrite;					

auf diesen wert wird nie zugegriffen

Bitte??? Wieso wird darauf nie zugegriffen, damit kann man doch gerade sagen, wie der Zugriff auf eine Datei eingerichtet werden soll...

Das ist eine globale Variable, auf die die Dateifunktionen zugreifen...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mi 20.07.05 15:00 
interessant, auf die idee dass system.pas globale variablen :lol: 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



BeitragVerfasst: 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.