Autor Beitrag
Thunder1988
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 18.01.07 13:13 
Ich will ein Programm schreiben, bei dem der Inhalt einer Stringgrid in einem Textfile gespeicher wird. Jetz will ich die geöffnete Datei Bearbeiten und wieder Speichern.

Mein Problem ist, dass ich die Datei wieder unter den selben Namen speichern möchte. Jedoch kommt bei mir immer eine Fehlermeldung. Aus der Hilfe bin ich leider nicht schlau geworden.

Hier ist der Quelltext für die procedure speichern:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure speichern(VAR Kl:TKlasse;VAR zaehler:integer);
var filename,ds :string;
    f           :textfile;
    i           :integer;
begin
  form1.SaveDialog1.Execute;
  filename:=form1.SaveDialog1.FileName;
  assignfile(f,filename);
  rewrite(f);
  for i:=1 to zaehler do
  begin
    ds:=Kl[i].Person.Name+';'+Kl[i].Person.Vorname+';'+Kl[i].Adresse.Strasse+';'
        +Kl[i].Adresse.PLZ+';'+Kl[i].Adresse.Ort+';'+Kl[i].Adresse.Telefon;
    writeln(f,ds);
  end;
  closefile(f)
END;



Moderiert von user profile iconChristian S.: Topic aus Neue Einträge / Hinweise / etc. verschoben am Do 18.01.2007 um 12:16
Moderiert von user profile iconChristian S.: Color- durch Delphi-Tags ersetzt
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Do 18.01.07 13:29 
Hast du das fileobjekt beim einlesen wieder geschlossen ?
Poste doch mal die Fehlermeldung.
Thunder1988 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 18.01.07 13:51 
Hier ist die Fehlermeldung:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EInOutError aufgetreten. Meldung: 'E/A-Fehler 32'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK   Hilfe   
---------------------------



und falls nötig ist hier noch die öffnen-Prozedur -> funktioniert Problemlos

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
procedure oeffnen(VAR Kl:TKlasse;VAR zaehler:integer);
var filename,ds,ds1 :string;
    f               :textfile;
    x               :integer;
begin
form1.opendialog1.Execute;
filename:=form1.opendialog1.FileName;
assignfile(f,filename);
reset(f);
zaehler:=0;
while not eof(f) do            //prüft, ob das ende des Strings erreicht  ist//
begin
  zaehler:=zaehler+1;
  Readln(f,ds);

  Kl[zaehler].Person.Name:='';
  x:=Pos(';',ds);              //Pos sucht im String ds den Teilstring ';'
                               //-> wenn der String gefunden wurde gibt Pos
                               //den Integer-Index des ersten Zeichens aus

  ds1:=Copy(ds,1,x-1);         //Copy weist ds1 den Teilstring vom ersten (1)
                               //bis zum x-1 (vor ';') Element aus dem String ds
                               //zu
  Kl[zaehler].Person.Name:=ds1;
  ds:=Copy(ds,x+1,length(ds)); // ds erhält den den reststring ab x+1(nach';')

  Kl[zaehler].Person.Vorname:='';
  x:=Pos(';',ds);
  ds1:=Copy(ds,1,x-1);
  Kl[zaehler].Person.Vorname:=ds1;
  ds:=Copy(ds,x+1,length(ds));

  Kl[zaehler].Adresse.Strasse:='';
  x:=Pos(';',ds);
  ds1:=Copy(ds,1,x-1);
  Kl[zaehler].Adresse.Strasse:=ds1;
  ds:=Copy(ds,x+1,length(ds));

  Kl[zaehler].Adresse.PLZ:='';
  x:=Pos(';',ds);
  ds1:=Copy(ds,1,x-1);
  Kl[zaehler].Adresse.PLZ:=ds1;
  ds:=Copy(ds,x+1,length(ds));

  Kl[zaehler].Adresse.Ort:='';
  x:=Pos(';',ds);
  ds1:=Copy(ds,1,x-1);
  Kl[zaehler].Adresse.Ort:=ds1;
  ds:=Copy(ds,x+1,length(ds));

  Kl[zaehler].Adresse.Telefon:='';
  ds1:=Copy(ds,1,length(ds));
  Kl[zaehler].Adresse.Telefon:=ds1;
  end;
END;


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 18.01.07 14:02 
Da fehlt das Schließen der Datei. Der EA-Fehler 32 bedeutet "Datei noch offen".

PS: Benutz beim nächsten Mal bitte [delphi]-Tags!

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Thunder1988 Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Do 18.01.07 15:10 
Hast du vieleicht auch eine Idee wie ich das Problem quelltextmäßig lösen kann? Ich vermute ich muss irgendwo closefile(f); einfügen,aber wo?
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 18.01.07 15:29 
Da wo du die Datei nicht mehr benötigst. Am Einfachsten am Ende der Prozedur. :wink:

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.