AGB  ·  Datenschutz  ·  Impressum  







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

IOResult stimmt nach WriteLn nicht!

Ein Thema von Andidreas · begonnen am 27. Dez 2006 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:26
aloha...

so langsam krieg ich die krise...


in meinem programm sollen in einem txt file user daten gespeichert werden...
wenn beim hinzufügen der daten (über writeln) ein fehler passiert soll eine fehlermeldung ausgegeben werden...
soweit zur theorie...
und hier ist jetzt mal der quellcode...

Delphi-Quellcode:
function TAddPW_Form.fnAddPWtoTextFile(sPWLocation, sPassword, sUser : String) : Boolean;

var
sPath, sRow : String;
txtFile : TextFile;

begin

  sPath := 'UserPWs\' + sUser + '_SPW.txt'; // Diese Datei Existiert nicht!
  sRow := sPWLocation + #9 + sPassword + #13;

  {$I-}
  AssignFile(txtFile, sPath);

  Append(txtFile);

  Writeln(txtFile, sRow); //Hier müsste ein Fehler auftreten
  ShowMessage(IntToStr(IOResult));
  If IOResult <> 0 Then
  Begin
    fnAddPWtoTextFile := False;
    ShowMessage(IntToStr(IOResult));
  End
  Else
  Begin
    fnAddPWtoTextFile := True;
    ShowMessage(IntToStr(IOResult));
  End;

  CloseFile(txtFile);

  {$I+}

end;
wenn ich mir nach dem WriteLn denn IOResult ausgeben lasse ist er auf 103...
in meiner If abfrage setzt er denn wert von fnAddPWtoTextFile aber trotzdem auf True!!!
und zeigt mir in der nächsten messagebox einen IOResult = 0 an!!!

Hab ich irgendwas falsch gemacht??? meiner meinung nach müsste ich ja einen False wert in fnAddPWtoTextFile erhalten!!!
und mich wundert es ausserdem warum sich der IOResult während der IF abfrage verändert!
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:31
Ähm, nur eine Idee: Wie wäe es, wenn du erst auf IOResult prüfst und wenn das in Ordnung ist in die Dati schreibst? die Variable IOREsult wird von Rewrite, Append, ... gesetzt und nicht von WriteLn.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:36
hmm ok werd ich mal probieren...

bist du dir sicher das das auch stimmt???

weil ich hab grad nach jeder aktion die ich mit dem txt file mach denn ioresult abgefragt...

nach assign --> 0
nach append --> 2
nach writeln --> 103
nach close --> 103

aber ich probiers trotzdem
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:42
Hi,

Zitat von Delphi-Hilfe:
Durch den Aufruf von IOResult wird das interne Fehler-Flag gelöscht.
Du mußt also das Ergebnis des Aufrufs von IOResult speichern, dann kannst du es prüfen und bei Bedarf ausgeben.

Delphi-Quellcode:
code := IOResult;
if (code <> 0) then
  ShowMessage (IntToStr(code));
Gruß Hawkeye
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:43
Moin Andreas,

dass nach dem Assign kein Fehler auftritt: Logisch, denn hier wird nur intern die Dateivariable mit dem Pfad in Verbindung gebracht, und dass nach dem Append Fehler 2 auftritt ist auch logisch, da Du oben geschrieben hast, dass die Datei nicht existiert.
Fehler 2: File not found.

Mit Append kannst Du keine Dateien erzeugen.
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
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:44
@Hawkeye219

danke für denn beitrag ^^ der hat jetzt meine vermutung unterstützt!!!

wenn ich gleich nach writeln denn ioresult abfrage kommt die fehlermeldung die ich erwartet hab

danke für eure hilfe
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:51
Zitat von Andidreas:
wenn ich gleich nach writeln denn ioresult abfrage kommt die fehlermeldung die ich erwartet hab
Warum erst warten bis das Kind in den Brunnen gefallen ist? Warum nicht vorher IOResult prüfen und in Abhängigkeit davon schreiben oder nicht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 14:58
es könnte ja theoretisch vorkommen das beim writeln ein fehler auftritt (ausser das die datei z.b. fehlt... weil die datei ist definitiv immer vorhanden!) von daher prüf ich writeln, wenn die datei fehlt oder ein anderer fehler auftritt meckert er aufjedenfall beim writeln...
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Hansa

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

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 15:01
Luckie, jede I/O-Operation liefert ioresult, also auch writeln.

Error 103 : "Datei nicht für Schreiboperationen geöffnet"

tödlich ist so was :

Delphi-Quellcode:
reset (f);
writeln (ioresult);
immer zwischenspeichern (writeln würde ioresult von sich selber anzeigen, wahrscheinlich 0) ! Z.B. so :

Delphi-Quellcode:
reset (f);
io := ioresult
writeln (io);
Showmessage dürfte es allerdings egal sein. Rest : siehe Luckie. Der $I- Block ist IMHO auch zu groß.

P.S.: Invasion der roten Kästen ? Lasse es trotzdem mal so stehen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: IOResult stimmt nach WriteLn nicht!

  Alt 27. Dez 2006, 15:11
@Hansa: Ich hatte eben, al ich den Democode geschrieben habe, allerdings Exceptions von Writeln bekommen, weil ich die Dateivariable vergessen hatte. Das heißt, esw ird doch eine Exception in manchen Fällen ausgelöst:

Delphi-Quellcode:
var
  f: Textfile;
begin
  AssignFile(f, ChangeFileExt(ParamStr(0), '.txt'));
{I-}
  Rewrite(f);
{I+}
  if IOResult = 0 then
  begin
    try
      Writeln(f, 'Test');
    except
      on E: Exception do
        ShowMessage(E.Message);
    end;
    CloseFile(f);
  end
  else
    ShowMessage(SysErrorMessage(GetLastError));
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:13 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