Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi kann eintrag aus stringgrid nicht in txt-datei speichern (https://www.delphipraxis.net/126946-kann-eintrag-aus-stringgrid-nicht-txt-datei-speichern.html)

Molzer 5. Jan 2009 14:15


kann eintrag aus stringgrid nicht in txt-datei speichern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!!

Probier schon so lange herrum, kann mir wer helfen?
Fehler von Deppugger-Exeption:
..eine Exception der Klasse EInOutError mit der Meldung 'E/A-Fehler 32' aufgetreten.

Da ich Anfänger bin kann natürlich mehr falsch sein :oops: ,
bitte das zu entschuldigen... danke (anbei ein bild

Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TDB=class
  name,titel:string;
  end;



type
  TForm2 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    s: TStringGrid;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
  DB:TDB;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
var f:textfile;
i:integer;
procedure TForm2.FormCreate(Sender: TObject);
begin
DB:=TDB.Create;
s.Cells[0,0]:='aa';
s.Cells[0,1]:='1';
s.Cells[0,2]:='2';
s.Cells[1,0]:='Titel';
s.Cells[2,0]:='Name' ;

end;
procedure TForm2.Button1Click(Sender: TObject);
begin
if opendialog1.execute then
begin
  assignfile (f,opendialog1.FileName);
  reset(f);
  rewrite(f);
  begin
        with DB do
        begin
          WriteLn(F,Titel+'|',Name);

end;
end;
end;
end;
end.

nahpets 5. Jan 2009 14:22

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
Hallo,

kommentiere mal das Reset(f) aus, dass dürfte in Deinem Zusammenhang überflüssig (und die Fehlerursache) sein. Du möchtest eine Datei erstellen, Reset will aber eine bestehende Datei öffnen. Wenn Du jetzt hergehst, und die Datei öffnest und dann überschreibst, scheitert das anscheinend.

Molzer 5. Jan 2009 14:33

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
würde aber gerne eine bestehende datei überschreiben,bzw etwas dran hängen.
oder ist es besser sie vorher einzulesen, dazu fehlt mir aber noch der text..

fg

Molzer 5. Jan 2009 14:37

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
ohne dem kommt "e/a fehler 32"

Luckie 5. Jan 2009 14:46

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
Zitat:

Zitat von Molzer
würde aber gerne eine bestehende datei überschreiben,bzw etwas dran hängen.

Dann musst du eine Fallunterscheidung machen. Wenn datei existiert, dann bestehende öffnen und Daten anhängen und wenn sie nicht existiert, eine neue Datei erstellen.

nahpets 5. Jan 2009 14:57

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
Hallo,

wenn die Datei existiert, kannst Du mit Append(f) Daten anhängen, existiert sie noch nicht, dann mit ReWrite(f) eine neue Datei erstellen (eine bestehende Datei wird ohne Nachfrage überschrieben). Zum Lesen wird Reset(f) benutzt. Jeder dieser Befehle schließt die gleichzeitige Benutzung der anderen aus.

Versuchs mal so in der Art:
Delphi-Quellcode:
   
AssignFile(f,opendialog1.FileName);
If Not FileExists(opendialog1.FileName) Then Begin
  ReWrite(f);
End Else Begin
  Append(f);
End;
Try
  WriteLn(f,'irgendeintext');
Except
  On e : Exception Do Begin
    ShowMessage(e.Message);
  End;
End;
CloseFile(f);

DeddyH 5. Jan 2009 15:16

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
Eben, das CloseFile hat im Ursprungscode auch noch gefehlt.

Molzer 5. Jan 2009 17:56

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
nein, leider fehler E/A 102..
bleibt bei append(f) hängen..

hab in der hilfe bissl unter e/a gesucht, bin aber net viel schlauer als vorher... :shock:

was noch ist: in zeile "WriteLn (F, Name);" kann ich nicht writeln(F, Titel+'|',Name+'|',Song+'|');
song und title mag er nicht, warum das? wenn doch name nimmt..

fg

Delphi-Quellcode:
type
  TForm2 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    s: TStringGrid;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
  DB:TDB;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
var f:textfile;
i:integer;
procedure TForm2.FormCreate(Sender: TObject);
begin
DB:=TDB.Create;
s.Cells[0,0]:='';
s.Cells[0,1]:='1';
s.Cells[0,2]:='2';
s.Cells[1,0]:='Titel';
s.Cells[2,0]:='Name';
s.Cells[3,0]:='Song';
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
if opendialog1.execute then
begin
If Not FileExists(opendialog1.FileName) Then Begin
  ReWrite(f);
End Else Begin
  Append(f);
End;
Try
  WriteLn (F, Name);
Except
  On e : Exception Do Begin
    ShowMessage(e.Message);
  End;
End;
CloseFile(f);
end;
end;
end.

DeddyH 5. Jan 2009 17:59

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
Wo ist denn das AssignFile?

[edit] Außerdem ist Deine Einrückung etwas unübersichtlich.
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  if opendialog1.execute then
    begin
      AssignFile(f,opendialog1.FileName); //diese Zeile hat gefehlt
      If Not FileExists(opendialog1.FileName) Then Begin
        ReWrite(f);
      End Else Begin
        Append(f);
      End;
      Try
        WriteLn (F, Name);
      Except
        On e : Exception Do Begin
          ShowMessage(e.Message);
        End;
      End;
      CloseFile(f);
    end;
end;
[/edit]

Molzer 5. Jan 2009 18:08

Re: kann eintrag aus stringgrid nicht in txt-datei speichern
 
Danke, hundertmal gelesen und nicht aufgefallen b :wall:
jetzt schreibt er mir "Form2 |" in die datei und nicht das was ich meinem stringgrid habe??

da ist wohl meine db unbrauchbar??

fg


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz