![]() |
Re: E/A Fehler 105
Moin Chrissy,
ich weiss jetzt nicht, wohin Dein WriteLn schreibt, aber
Code:
statt
writeln([b][color=red]f[/color][/b],....
Delphi-Quellcode:
wär wahrscheinlich besser.
writeln(Pfad+'Dokumente\RechnungK.csv',
|
Re: E/A Fehler 105
ich Probiers mal aus, aber erst mal doch jetzt schlafen.... ;)
|
Re: E/A Fehler 105
hym, wenn ich das f statt der Pfadangabe in Writeln schreibe, bekomme ich eine Fehlermeldung beim Compilieren bzg. ungültiger Typ in write/writeln anweisung.
|
Re: E/A Fehler 105
Ist das "f" auch überhaupt deklariert ?
Delphi-Quellcode:
var f : Text;
|
Re: E/A Fehler 105
s.o.
Ja, f ist als File deklariert. Nur, warum soll ich F als text deklarieren, wenn ich dann letztenendes genau das in der variablen abspeicher, was ohnehin in meiner anweisung steht?! |
Re: E/A Fehler 105
Moin!
Zitat:
Hansa hat sich verschrieben und meint:
Delphi-Quellcode:
.
Var f : TextFile;
f steht dann für eine Textdatei die du dann mit Read/ReadLn lesen und mit Write/WriteLn schreiben kannst, wobei du aber bei den Funktionen immer als erstes entweder einen Dateiidentifier angeben musst (also hier f), damit es in die Datei geht. Wenn du dies nicht tust, dann liest Read/ReadLn vom stdin (Standard Input) und Write/WriteLn schreibt in den stdout (Standard Output). Und die Read(Ln)/Write(Ln) Funktionen sind nicht kompatibel bzw. nutzbar mit untypisierten Dateitypen bzw. Binärtypen wie z.B. File of Integer oder einfach nur File. MfG Muetze1 |
Re: E/A Fehler 105
poste den letzten Source, sonst wird das nichts.
|
Re: E/A Fehler 105
Delphi-Quellcode:
procedure TForm1.Kunde2Click(Sender: TObject);
var document : TFileStream; f : file; begin // Rechnungen Drucken KUNDE Daten.QSonstigeBefehle.DatabaseName:=pfad+'\Daten'; Daten.QSonstigeBefehle.Active:=false; Daten.QSonstigeBefehle.SQL.Clear; Daten.QSonstigeBefehle.SQL.Add('Select V.Id AS Rechnungsnummer, A.Anrede, K.Vorname, K.Name, K.Strasse, K.Hausnummer, K.PLZ, OV.Ort, K.Id AS Kundennummer, V.Datum AS Vermittlungsdatum, M.Modul, V.Preis FROM "'+pfad+'\Daten\anrede.DB" A INNER JOIN "'+pfad+'\Daten\kunde.DB" K ON (A.Id = K.Anrede) INNER JOIN "'+pfad+'\Daten\vermittlung.DB" V ON (K.Id = V.Kunde) INNER JOIN "'+pfad+'\Daten\ort_vorwahl.db" Ov ON (Ov.Id = K."Ort/Vorwahl") INNER JOIN "'+pfad+'\Daten\modul.db" M ON (M.Id = V.Modul) WHERE (V.RechnungK = false)'); Daten.QSonstigeBefehle.Active:=true; with Daten.DSSonstigeBefehle.DataSet do begin if not fileExists(Pfad+'\Dokumente\RechnungK.doc') then document:= TFileStream.Create(Pfad+'\Dokumente\RechnungK.doc', fmCreate) else begin AssignFile(f, Pfad+'\Dokumente\RechnungK.doc'); Erase(f); document:= TFileStream.Create(Pfad+'\Dokumente\RechnungK.doc', fmCreate); end; //ShowMessage('Datei angelegt!'); Open; First; {$I-} AssignFile(f, Pfad+'Dokumente\RechnungK.doc'); FileMode := 2; Reset(f); while (not eof) do begin writeln(Pfad+'Dokumente\RechnungK.doc', FieldByName('Rechnungsnummer').AsString+';'+FieldByName('Anrede').AsString+';'+FieldByName('Name').AsString+';'+FieldByName('Vorname').AsString+';'+FieldByName('Strasse').AsString+';'+FieldByName('Hausnummer').AsString+';'+FieldByName('PLZ').AsString+';'+FieldByName('Ort').AsString+';'+FieldByName('Kundennummer').AsString+'K'+';'+FieldByName('Vermittlungsdatum').AsString+';'+FieldByName('Modul').AsString+';'+FieldByName('Preis').AsString+';'); with Daten.tVermittlung do begin locate('Id', Daten.QSonstigeBefehle.FieldValues['Rechnungsnummer'], []); Edit; FieldByName('Rechnungsdatum').AsDateTime:=Date; FieldByName('RechnungK').AsBoolean := true; post; end; next; end; //Writeln('klappts?'); //SaveFile(Pfad+'Dokumente\RechnungK.doc'); CloseFile(f); {$I+} end; document.Free; ShowMessage('Datei RechnungK kann nun in Serienbrief eingebunden werden.') end; So, etwas spät, ich weiss, aber das ist mein letzter Source Code. wenn ich zusätzlich noch die console öffne, schreibt er das da rein, was nicht gan meine idee ist... :( Gruß Chrissy |
Re: E/A Fehler 105
Hi, etwas spät aber hier mein letzter colde
Delphi-Quellcode:
procedure TForm1.Kunde2Click(Sender: TObject);
var document : TFileStream; f : file; begin // Rechnungen Drucken KUNDE Daten.QSonstigeBefehle.DatabaseName:=pfad+'\Daten'; Daten.QSonstigeBefehle.Active:=false; Daten.QSonstigeBefehle.SQL.Clear; Daten.QSonstigeBefehle.SQL.Add('Select V.Id AS Rechnungsnummer, A.Anrede, K.Vorname, K.Name, K.Strasse, K.Hausnummer, K.PLZ, OV.Ort, K.Id AS Kundennummer, V.Datum AS Vermittlungsdatum, M.Modul, V.Preis FROM "'+pfad+'\Daten\anrede.DB" A INNER JOIN "'+pfad+'\Daten\kunde.DB" K ON (A.Id = K.Anrede) INNER JOIN "'+pfad+'\Daten\vermittlung.DB" V ON (K.Id = V.Kunde) INNER JOIN "'+pfad+'\Daten\ort_vorwahl.db" Ov ON (Ov.Id = K."Ort/Vorwahl") INNER JOIN "'+pfad+'\Daten\modul.db" M ON (M.Id = V.Modul) WHERE (V.RechnungK = false)'); Daten.QSonstigeBefehle.Active:=true; with Daten.DSSonstigeBefehle.DataSet do begin if not fileExists(Pfad+'\Dokumente\RechnungK.doc') then document:= TFileStream.Create(Pfad+'\Dokumente\RechnungK.doc', fmCreate) else begin AssignFile(f, Pfad+'\Dokumente\RechnungK.doc'); Erase(f); document:= TFileStream.Create(Pfad+'\Dokumente\RechnungK.doc', fmCreate); end; //ShowMessage('Datei angelegt!'); Open; First; {$I-} AssignFile(f, Pfad+'Dokumente\RechnungK.doc'); FileMode := 2; Reset(f); while (not eof) do begin writeln(Pfad+'Dokumente\RechnungK.doc', FieldByName('Rechnungsnummer').AsString+';'+FieldByName('Anrede').AsString+';'+FieldByName('Name').AsString+';'+FieldByName('Vorname').AsString+';'+FieldByName('Strasse').AsString+';'+FieldByName('Hausnummer').AsString+';'+FieldByName('PLZ').AsString+';'+FieldByName('Ort').AsString+';'+FieldByName('Kundennummer').AsString+'K'+';'+FieldByName('Vermittlungsdatum').AsString+';'+FieldByName('Modul').AsString+';'+FieldByName('Preis').AsString+';'); with Daten.tVermittlung do begin locate('Id', Daten.QSonstigeBefehle.FieldValues['Rechnungsnummer'], []); Edit; FieldByName('Rechnungsdatum').AsDateTime:=Date; FieldByName('RechnungK').AsBoolean := true; post; end; next; end; //Writeln('klappts?'); //SaveFile(Pfad+'Dokumente\RechnungK.doc'); CloseFile(f); {$I+} end; document.Free; ShowMessage('Datei RechnungK kann nun in Serienbrief eingebunden werden.') end; Ausgeben tut er im moment direkt in die Console was nicht ganz meiner Idee entspricht. Wo der fehler genau liegt, weiss ich aber nicht. Gruß Chrissy |
Re: E/A Fehler 105
Da sind etliche Fehler oder zumindest Ungereimtheiten.
Zitat:
2. Reset öffnet zum NUR-Lesen. Rewrite verwenden. 3. was ist Filemode, bzw. wieso weist du dem einen Wert zu ?? 4. EOF ohne Parameter bezieht sich auf Konsole EOF (f) wäre richtig. 5. was ist, wenn eine Datei nicht da ist ? Wozu gibt es (*$I-*) usw.? Oh je, das ist ja eine mittlere Katastrophe. :wall: statt writeln (f,....) verwendest du den Dateinamen selbst, der muß in assign zugewiiesen werden an das f. Danach darf nur das f benutzt werden. In den 5 analysierten Zeilen dürften mit Folgefehlern mind. 20 weitere auftauchen. :???: Na denn, viel Spaß. Ich empfehle dringend das Delphi-Handbuch. :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 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