AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

E/A Fehler 105

Ein Thema von chrissy · begonnen am 22. Jan 2005 · letzter Beitrag vom 6. Feb 2005
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: E/A Fehler 105

  Alt 22. Jan 2005, 04:21
Moin Chrissy,

ich weiss jetzt nicht, wohin Dein WriteLn schreibt, aber

Code:
writeln([b][color=red]f[/color][/b],....
statt

writeln(Pfad+'Dokumente\RechnungK.csv', wär wahrscheinlich besser.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
chrissy

Registriert seit: 7. Jan 2005
29 Beiträge
 
#12

Re: E/A Fehler 105

  Alt 22. Jan 2005, 07:04
ich Probiers mal aus, aber erst mal doch jetzt schlafen....
  Mit Zitat antworten Zitat
chrissy

Registriert seit: 7. Jan 2005
29 Beiträge
 
#13

Re: E/A Fehler 105

  Alt 28. Jan 2005, 12:32
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.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: E/A Fehler 105

  Alt 28. Jan 2005, 12:36
Ist das "f" auch überhaupt deklariert ? var f : Text;
Gruß
Hansa
  Mit Zitat antworten Zitat
chrissy

Registriert seit: 7. Jan 2005
29 Beiträge
 
#15

Re: E/A Fehler 105

  Alt 28. Jan 2005, 12:45
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?!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#16

Re: E/A Fehler 105

  Alt 28. Jan 2005, 13:47
Moin!

Zitat von chrissy:
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?!
Klingt komisch, ist aber fast richtig.

Hansa hat sich verschrieben und meint: 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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: E/A Fehler 105

  Alt 28. Jan 2005, 15:55
poste den letzten Source, sonst wird das nichts.
Gruß
Hansa
  Mit Zitat antworten Zitat
chrissy

Registriert seit: 7. Jan 2005
29 Beiträge
 
#18

Re: E/A Fehler 105

  Alt 6. Feb 2005, 14:45
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
  Mit Zitat antworten Zitat
chrissy

Registriert seit: 7. Jan 2005
29 Beiträge
 
#19

Re: E/A Fehler 105

  Alt 6. Feb 2005, 14:47
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: E/A Fehler 105

  Alt 6. Feb 2005, 15:24
Da sind etliche Fehler oder zumindest Ungereimtheiten.

Zitat von chrissy:
f : file;
AssignFile(f, Pfad+'Dokumente\RechnungK.doc');
FileMode := 2;
Reset(f);
while (not eof) do
begin
writeln(Pfad+'Dokumente\RechnungK.doc', FieldByName
1. f : Text; statt f : file
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.
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz