![]() |
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. |
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. |
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 |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
ohne dem kommt "e/a fehler 32"
|
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Zitat:
|
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); |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Eben, das CloseFile hat im Ursprungscode auch noch gefehlt.
|
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. |
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:
[/edit]
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; |
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 |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
hab die zeile mit
Delphi-Quellcode:
ergänzt und jetzt schreibt er mir leider nur das unterm anführungszeichen und nicht das was
Try with db do
WriteLn (F,Name+'|',song+'|',titel+'|'); ich ins stringgrid schreibe.. fg |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Du setzt die Properties von DB ja auch nirgends.
[edit] Außerdem führt die Verwendung von with im Zusammenhang mit der Property Name hier wohl zu einer Verwechslung. Lass das with besser weg und schreib es aus.
Delphi-Quellcode:
[/edit]
WriteLn(F,DB.Name + '|' + DB.titel + '|'); //was soll denn song sein?
|
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
song habe ich neu dazugefügt!
hab das jetzt ohne with gemacht, keine wellen mehr, aber leider nichts aus dem stringgrid.. danke für deine hilfe!!! fg |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Ich versteh Dich immer noch nicht. Du legst DB neu an, befüllst aber die Properties nicht, sondern schreibst in ein StringGrid. Beim Speichern willst Du aber die nicht befüllten Properties von DB abspeichern anstatt der Zellen des Grids :gruebel:
|
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
ich habs mit
Delphi-Quellcode:
da schreibt er mir den text aus der zelle..
WriteLn (F,s.Cells[1,1]+'|',db.song+'|',db.titel+'|');
das wäre aber bei 20 zeilen mühsam, hab aber keine idee wie ich das mit der db hinbekomme.. leider :cheer: fg |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Kannst Du mal einen Screenshot des Grids anhängen?
|
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Liste der Anhänge anzeigen (Anzahl: 1)
würde es gerne auf 20 zeilen erweitern...
denke da ist wohl einer for i=1 to angebraucht? |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
Das sehe ich auch so, dann kannst Du Dir die Klasse sparen (eine einzige Instanz würde ja eh nicht reichen).
Delphi-Quellcode:
So in der Art.
for i := s.FixedRows to Pred(s.RowCount) do
WriteLn (F,Format('%s|%s|%s',[s.Cells[1,i],s.Cells[2,i],s.Cells[3,i]])); |
Re: kann eintrag aus stringgrid nicht in txt-datei speichern
vielen dank für deine hilfe!!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 Uhr. |
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