Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bedeutung von E/A-Fehler 123? (https://www.delphipraxis.net/123854-bedeutung-von-e-fehler-123-a.html)

easywk 10. Nov 2008 13:12


Bedeutung von E/A-Fehler 123?
 
Moin, moin,

im meiner Anwendung kommt es bei manchen Anwendern zu einem E/A-Fehler 123, bei den meisten anderen Anwendern aber nicht. Kann mir jemand sagen, was die Nummer 123 bei den E/A-Fehlern aussagt? Die Nummer finde ich in den Standard-E/A-Fehlerlisten leider nicht.


Der Fehler erscheint nur, wenn das Programm im Netzwerk gestartet worden ist. Abbruchstelle ist die nachfolgende Anweisung:
Delphi-Quellcode:
if SelectDirectory(Pfad,[],0) then
wobei Pfad den Wert "C:\Temp\" hat ...

Vielen Dank.
easy

nahpets 10. Nov 2008 13:27

Re: Bedeutung von E/A-Fehler 123?
 
Hallo,

müsste bedeuten, dass im Dateinamen einer zu speichernden Datei ein ungültiges Zeichen enthalten ist.

Frag' mal Google: hier, da gibt es Hinweise auf diesen Fehler.

Gibt es auf jedem Rechner C:\Temp\?

Wenn nein, nutze eventuell für den Zusammenbau des Dateinamens die Umgebungsvariabeln %TEMP% oder %TMP%.

easywk 10. Nov 2008 13:31

Re: Bedeutung von E/A-Fehler 123?
 
Hallo,

ich habe dieses Verfahren verwendet, um Pfad vorzubelegen :-( Und das Verzeichnis gibt es auch.
Es muss irgendwie SelectDirectory liegen. Es passiert auch nur, wenn die Vorbelegung von Pfad auf die lokale Festplatte weist, dass Programm selber im Netzwerk gestartet worden ist.

Die Google-Links helfen mir nicht weiter. das hatte ich bereits versucht. Da gab es aber immer Fehler mit der Dateinamenzuweisung. Ich suche aber ja gar keinen Dateinamen sondern will ein Verzeichnis auswählen. Trotzdem danke

cu
Easy

Hawkeye219 10. Nov 2008 13:39

Re: Bedeutung von E/A-Fehler 123?
 
Hallo,

möglicherweise wird der Fehler gar nicht von deinem Code hervorgerufen (klick) oder die Ursache ist etwas, was du zunächst gar nicht im Verdacht hattest (klick).

Gruß Hawkeye

easywk 10. Nov 2008 13:51

Re: Bedeutung von E/A-Fehler 123?
 
Zitat:

Zitat von Hawkeye219
möglicherweise wird der Fehler gar nicht von deinem Code hervorgerufen

Es scheint so zu sein. Von SelectDirectory() gibt es ja zwei Varianten und wenn ich anstatt
Delphi-Quellcode:
if SelectDirectory(Pfad,[],0) then
die Variante
Delphi-Quellcode:
if SelectDirectory('Verzeichnis wählen','',Pfad) then
benutze, dann geht es.

Danke.

cu
easy

nahpets 10. Nov 2008 14:03

Re: Bedeutung von E/A-Fehler 123?
 
Hallo,

hab' mal eben ein Programm geschrieben, das die Funktion aufruft und das dann über's Netz mit UNC-Pfad von 'nem Rechner an 'nem anderen Standort aufgerufe. Gibt keine Probleme, selbst wenn das in Pfad angegeben Verzeichnis nicht existiert.

Da blieben als Fehlermöglichkeiten: Rechteprobleme oder unterschiedliche Zeichensätze?

SelectDirectory benutzt intern TSelectDirDlg aus FileCtrl. Setz' Dir mal 'nen Breakpiont vor dem If und versuche dann in FileCtrl hinein zu debuggen (wenn es Dir gelingt, auf Deinem Rechner den Fehler nachzuvollziehen, sonst bringt das natütlich nix).
Das FormCreate von dem Dialog sieht (bei Delphi 7) so aus:
Delphi-Quellcode:
procedure TSelectDirDlg.FormCreate(Sender: TObject);
var
  UserHandle: THandle;
  NetDriver: THandle;
  WNetGetCaps: function (Flags: Word): Word;
begin
  { is network access enabled? }
  UserHandle := GetModuleHandle(User32);
  @WNetGetCaps := GetProcAddress(UserHandle, 'WNETGETCAPS');
  if @WNetGetCaps <> nil then
  begin
    NetDriver := WNetGetCaps(Word(-1));
    if NetDriver <> 0 then
    begin
      @WNetConnectDialog := GetProcAddress(NetDriver, 'WNETCONNECTDIALOG');
      NetButton.Visible := @WNetConnectDialog <> nil;
    end;
  end;

  FAllowCreate := False;
  DirLabel.BoundsRect := DirEdit.BoundsRect;
  DirListChange(Self);
end;
Könnte mir vorstellen, das eventuell hier der Fehler auftritt.

Es wäre interessant zu wissen, ob der Fehler vor oder nach dem Anzeigen des Dialoges auftritt.

Die zweite von Dir benutze Variante nutzt einen vollkommen anderen Weg zur Anzeige des Dialoges. Da mag es durchaus sein, dass der eine funktioniert und der andere nicht.

easywk 10. Nov 2008 14:12

Re: Bedeutung von E/A-Fehler 123?
 
Ich kann es bei mir nicht nachvollziehen, daher auch nicht debuggen. Ich bin mittels Logdateien auf die Stelle gekommen (zum Glück ist der Anwender extrem kooperativ :-)). Ich denke es liegt an einer ganz simplen Sache. Das Programm ist auf einem Linux-Server mit Samba-Umgebung abgelegt und wird von Windows aus gestartet ... auf nem Windows-Server oder einer anderen Windows-Workstation gibt es kein Problem. Muss also mit dem Linux zusammen hängen. Mir steht aber leider kein Linuxserver zur Verfügung.

Ich werde jetzt einfach alle SelectDirectory auf die andere Variante umstellen und gut ist.

cu
easy

nahpets 10. Nov 2008 14:15

Re: Bedeutung von E/A-Fehler 123?
 
Hallo,

Dein Lösungsweg ist okay.
Das klingt wirklich schwer nach Zeichensatzproblemem, c:\temp\ und Co. sind auf 'nem Linuxrechner nicht üblich.

Klaus01 10. Nov 2008 15:14

Re: Bedeutung von E/A-Fehler 123?
 
Zitat:

Zitat von easywk
. Mir steht aber leider kein Linuxserver zur Verfügung.

Der ließe sich auf einer virtuellen Maschine (VMWare) einrichten, nur für den Fall dass Du es noch einmal brauchen solltest.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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 by Thomas Breitkreuz