AGB  ·  Datenschutz  ·  Impressum  







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

I/O-Fehler-998

Ein Thema von Nicodius · begonnen am 16. Mär 2007 · letzter Beitrag vom 18. Mär 2007
Antwort Antwort
Seite 1 von 3  1 23      
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#1

I/O-Fehler-998

  Alt 16. Mär 2007, 13:28
ich will n record speichern und laden

jetzt hat mein chef gesagt mit blockread/write geht das gut
hab hier gesucht und wie immer was passendes gefunden aber jetzt krieg ich einen fehler "I/O-Fehler-998" also IN ount fehler irgendwas mit dem lesen/schreibe nder datei aber fehler code 998 finde ich nirgendwo


ich hoffe ihr könnt mir mit dem quellcode helfen

hier issa

Delphi-Quellcode:
type
Vert_Ent = record
  vtjahr : Integer;
  vtproz : array [0..11] of Integer;
end;

Steuer = record
  st_bez : string[30];
  st_jahr : array [0..11] of Integer;
  st_vert : string[10];
  st_aufk : array [0..11] of longint;
end;

Modell = record
  und_bez : string[30];
  und_st : array [0..31] of Steuer;
end;


TAlles= record
  Vert_ast : array [0..30] of array [0..22] of string[30] ;
  vert_datum : array [0..31] of Vert_ent;
  mod_ : array [0..15] of Modell;
  end;
var
  Form1: TForm1;
  Alles : TAlles;
implementation

{$R *.DFM}

procedure TForm1.SaveClick(Sender: TObject);
var

  FaDatei: file of Talles;
  NumRead, NumWritten: Integer;
  Buf: array[1..2048] of Char;
  result : word;
begin
    if SaveDialog1.Execute then { Dialog zum Speichern anzeigen }
    begin
      AssignFile(FaDatei, SaveDialog1.FileName);   { Ausgabedatei öffnen }
      Rewrite(FaDatei);   { Datensatzgröße = 1 }
      repeat
        BlockWrite(FaDatei, Buf, NumRead, NumWritten);
      until (NumRead = 0) or (NumWritten <> NumRead);
        CloseFile(FaDatei);
    end;
    //EInOutError
end;

mach ich generell was falsch?


glg Nico
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 14:05
ich würde an deiner Stelle generell auf FileStream umsteigen und die relikte aus alten (nicht objektorientierten) Zeiten ruhen lassen.
An welcher Stelle genau (Codezeile) fliegt dir der Fehler um die Ohren?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#3

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 14:11
naja mein chef will auch dass ich c statt c++ lern weil man damit mehr möglichkeiten hat

ich bin echt ratlos in der sache sonst bräucht ich eure hilfe nicht - er wills halt nun mal so haben da hilft kein erklären ;D

lg nico
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 14:13
die frage in welcher zeile der fehler kommt bleibt Und wenn du ihm einfach die Lösung mit TFileStream präsentierst wird er sicher nicht sagen: "Das funktioniert zwar aber bitte mach es anders und investiere noch ein paar Stunden"
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#5

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 14:16
nein aber er wills so klein wie möglich haben und ach ich weiß nicht was ich machen soll was das angeht ich bin eh schon sehr genervt weil ich ihm das ganze schon einmal vorgelegt hab er wills nunmal so ich soll jetzt auch über den ferialjob hinweg(den ich auch bei ihm mache) c lernen weil dass das einzig wahre ist mit dem man alles machen kann und viel mehr als mit den heutigen programmiersprachen

er nennt den wirth auch immer einen "koffer" weil viel zu viel vorgegeben ist (auf verweis dass es ehemals eine lernsprache für studierende war), dass steuerzeichen im string enthalten sind und zuviel datenmüll gespeichert wird.



der fehler tritt beim drücken auf den speicher knopf auf wenn ich debugge bei
  BlockWrite(FaDatei, Buf, NumRead, NumWritten);
lg nico
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#6

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 14:23
alte Relikte?

Dieses sind nur direkte Weiterleitungen zur WinAPI.

TFileStream ist eine viel zu groß aufgeblasene Klasse, welche eigenlich das Selbe macht.



ich find die ganze SaveClick-Prozedure eigenartig.

Da wird 'ne Datei zu Schreiben geöffnet,
und dann unter Umständen (NumRead zufällt = SizeOf(Buf)) ununterbrochen da reingeschrieben.

Was wird da überhaupt gespeichert?
> BlockWrite(FaDatei, Buf, NumRead, NumWritten);
in Buf wurde ja nichts reingeladen

was ist mir NumRead (völlig undeffinierter inhalt)
> until (NumRead = 0) or (NumWritten <> NumRead);

> Buf: Talles; wäre schonmal schön

Der Fehler 998 ... könnte der beim Aufruf von BlockWrite auftauchen?
vermutlich weil SizeOf(Talles) <> SizeOf(Buf)

[edit]
"der fehler tritt beim drücken auf den speicher knopf auf wenn ich debugge bei"
hab'sch doch richtig vermutet
[/edit]

> { Datensatzgröße = 1 }
wohl eher { Datensatzgröße = SizeOf(Talles) }

....
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#7

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 14:35
leider hat mir das jetzt überhaupt nix gebracht hab das buf : talles gemacht sattt of array of char aber nix geholfen gleicher fehler

ja ich weiß dass fehlerdrinnen sind weil ich mit dem ganzen zeugs noch nie gearbeitet habe und einfach vermutet habe mit der delphihilfe das beispiel genommen und zerlegt hab


das save ding is nur mal zum vorbeugen nacher wird das im extractfilepath(paramstr(0)) + 'fafile.dat' gespeichert

kanns vl sein dass ich zuerst n createfile machen muss?



hier is das beispiel aus der delphi hilfe da wird in buf übrigens auch nix reingeschrieben

Delphi-Quellcode:
var

  FromF, ToF: file;
  NumRead, NumWritten: Integer;
  Buf: array[1..2048] of Char;
begin
  if OpenDialog1.Execute then { Dialog zum Dateiöffnen anzeigen }
  begin
    AssignFile(FromF, OpenDialog1.FileName);
    Reset(FromF, 1);   { Datensatzgröße = 1 }
    if SaveDialog1.Execute then { Dialog zum Speichern anzeigen }
    begin
      AssignFile(ToF, SaveDialog1.FileName);   { Ausgabedatei öffnen }

      Rewrite(ToF, 1);   { Datensatzgröße = 1 }
      Canvas.TextOut(10, 10, 'Kopieren von ' + IntToStr(FileSize(FromF))
        + ' Byte...');
      repeat
        BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
        BlockWrite(ToF, Buf, NumRead, NumWritten);
      until (NumRead = 0) or (NumWritten <> NumRead);
        CloseFile(FromF);
        CloseFile(ToF);
    end;
  end;
end;
lg nico
Nico Müller
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#8

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 15:49
weiß vl wer wo man die fehlernr wenigstens nachschauen kann?
in der delphu hilfe is dieser nicht vermerkt
lg nico
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#9

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 16:17
Das CreateFile (WinAPI) versteckt sich im Rewrite/Reset/Append.

Im AssignFile wird eigentlich nichts gemacht, außer den Dateinamen in dem Delphi-Record, welcher sich in der File-Variable (FaDatei) versteckt. Im Rewrite/Reset/Append wird dann die Datei per CreateFile umd mit den da gewählten Rechten/Optionen geöffnet.

Ich hab zwar auch schon seit Ewigkeiten nicht mehr mit diesen Dateifunktionen gearbeitet (mache vieles gern direkt über die WinAPI), aber ich kann ja dann daheim mal mit dem Code aus #1 ein Testproject aufmachen und da mal reinsehn was eventuell los ist ... es sei den du stellst mal irgendwie dein testprojet bereit damit man direkt an der Quelle nach 'nem Fehler suchen kann...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: I/O-Fehler-998

  Alt 16. Mär 2007, 16:26
Hallo,

der Fehler in Beitrag #1 ist doch offensichtlich: Die Logik aus dem Delphi-Beispiel wurde verstümmelt und der verbliebene Rest ist unbrauchbar. Lieber Nico, wenn du in der Online Hilfe mal unter BlockWrite nachliest, dann erkennst du bestimmt, dass NumRead bei dir initialisiert werden muss und vom Namen her nur im Original-Beispiel Sinn gemacht hat.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:57 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