Seite 2 von 2

Verfasst: 11.01.2009 15:17
von DarkDragon
AND51 hat geschrieben:Wenn mans so macht, kann man NetworkInit() ohne Probleme auch mehrmals aufrufen, falls die Initialisierung beim 1. Mal nicht geklappt haben solle. Es wird dann immer der korrekte Rückgabewert zurückgegeben und die Initialisierung ggf. nochmal versucht.
Nein eben nicht. Wenn die initialisierung fehlschlägt und man probiert es nochmal, dann kommt eben jener Fehler vom Debugger. Man darf es nicht 2 mal initialisieren, wieso auch immer.

Verfasst: 11.01.2009 15:28
von Kaeru Gaman
bleibt die frage, aus welchem Grund InitNetwork fehlschlagen kann.

wenn es auch dann fehlschlägt, wenn eine Netzwerkkarte installiert und verfügbar ist,
aber kein Kabel drin oder der Router nicht an, dann wäre das unsinnig.

wenn es allerdings nur dann fehlschlägt, wenn der Rechner überhaupt nicht Netzwerkfähig ist,
weil keine Karte drin ist, dann ist es auch nicht sinnvoll, einen mehrfachen Init-Aufruf zu erlauben.

Verfasst: 11.01.2009 19:21
von AND51
DarkDragon hat geschrieben:
AND51 hat geschrieben:Wenn mans so macht, kann man NetworkInit() ohne Probleme auch mehrmals aufrufen, falls die Initialisierung beim 1. Mal nicht geklappt haben solle. Es wird dann immer der korrekte Rückgabewert zurückgegeben und die Initialisierung ggf. nochmal versucht.
Nein eben nicht. Wenn die initialisierung fehlschlägt und man probiert es nochmal, dann kommt eben jener Fehler vom Debugger. Man darf es nicht 2 mal initialisieren, wieso auch immer.
Achso, dann erlaubt der Debugger das mehrfache initialisieren nicht?`
Geht es denn ohne Debugger? Wenn ja, sehe ich kein Problem darin, es mehrmals zu versuchen, wenn die Initialisierung beim 1. Mal fehlschlägt. Ich hatte zwar dieses Szenario noch nie, aber ich kann mir vorstellen, dass es zum Beispiel dann fehlschlägt, wenn das Netzwerk inaktiv/abgestöpselt/ausgeschaltet ist. Dann könnte das Programm den Rückgabewert von InitNetwork() auswerten und Bescheid geben. Der Benutzer kümmert sich eben um das Problem, klickt im Programm auf "Wiederholen" und dann geht's. Ist doch besser, als das Programm neu starten zu müssen, nachdem der Benutzer das Netzwerk "angeworfen" hat. Das war mein Gedanke.

Verfasst: 11.01.2009 22:00
von Kaeru Gaman
es geht hier aber mal wieder nicht um vorstellen, sondern eher um wissen.

Verfasst: 11.01.2009 23:20
von AND51
Jo... Aber ich habe verständlicherweise keine Lust hier das Szenario eines halbtoten Netzwerks nachzustellen, nur um das jetzt im Rahmen dieses Threads genau zu ergründen.

Verfasst: 12.01.2009 00:19
von HeX0R
In einer Include würde ich im übrigen überhaupt kein InitNetwork() aufrufen, das mache ich i.d.R. im Hauptprogramm vor dem Einbinden.

Verfasst: 12.01.2009 06:11
von edel
Ich wuerd es so machen :

Code: Alles auswählen

Import ""
  PB_Network_Objects
EndImport 

If PB_Network_Objects = 0
  InitNetwork()
EndIf 

Verfasst: 13.01.2009 13:46
von PMV
Ist 'Ergebnis' gleich 0, ist kein TCP/IP-Stack auf dem System verfügbar, andernfalls wurde alles korrekt initialisiert.
Dieser TCP/IP-Stack dürfte doch dann vorhanden sein, wenn das Protokoll
im Betriebsystem installiert ist. Damit ist es unerheblich, ob eine
Netzwerkkarte im Rechner steckt oder nicht ... das könnte man aber
testen, in dem man einfach mal die Karte deaktiviert und dann InitNetwork()
aufruft.

Ohne vorhandene Netzwerkverbindung schlägt lediglich das Verbinden zu
entfernten Rechnern fehl, also OpenNetworkConnection().

MFG PMV