PB dröselt Parameter von hinten auf?
Verfasst: 25.01.2006 20:36
Hallo!
Ausgehend von dieser Codezeile möchte ich mal was fragen:So. Es geht hier nicht um eine konkrete Frage zu einem konkreten Problem, sondern: Wenn ihr diese Zeile kompiliert (mit InitNetwork(), of course), dann werdet ihr feststellen, dass erst nach dem Port und dann nach dem Ziel gefragt wird.
Warum ist das so?
Ich bin auf das Problem gestoßen, als ich mich das erste mal mit CreatePack() und Co. von PB beschäftigt habe. Ich habe in Googles Cache folgendes gefunden:
OK, deswegen habe ich mir fast umsonst meine Haare vor Wut vom Kopf gerissen
weil ich die ganze Zeit rumprobiert habe, warum das nicht geht: Eine inkludierte Datei PB-Entpacken und in eine Datei speichern.
Warum geht das obige Beispiel nicht? Nun, PackFileSize() liefert die Dateigröße der Datei, die NextPackFile() zurückgibt. Da PB aber anscheinend alle Parameter von hinten "aufdröselt" kann das obere Beispiel nicht funktionieren, sondern erst das zweite. Denn da wird ja erst NextPackFile() aufgerufen, sodass die zweite Funktion problemlos die Größe zurückgeben kann.
Ist das bei anderen Befehlen oder gar allen Befeheln genauso? Wie oben gezeigt, habe ich das bisher bei OpenNetworkconnection() festgestellt.
Arbeite PB bei If auch von rechts nach links? Wenn ja (oder auch nein), was ist, wenn ich, wenn's klappt, erst eine Datei erstellen will und dann die Datein reinschreiben will? geht dannetwa in die Hose, weil er erst die Daten zu schreiebn versucht und dann überprüft, ob die Datei korrekt angelegt wurde?
Mit dieser "Tatsache" will ich niemanden anprangern, ich möcht' das "Phänomäen" einfach nur lüften...
Ausgehend von dieser Codezeile möchte ich mal was fragen:
Code: Alles auswählen
server=OpenNetworkConnection(InputRequester("Ziel", "IP, Hostnamen oder Domain eingeben:", ""), Val(InputRequester("Port", "An welchen Port ein Server aufmachen?", "")))
Warum ist das so?
Ich bin auf das Problem gestoßen, als ich mich das erste mal mit CreatePack() und Co. von PB beschäftigt habe. Ich habe in Googles Cache folgendes gefunden:
http://66.249.93.104/search?q=cache:xtx ... =clnk&cd=2gimbly hat geschrieben:Habe gerade den merkwürdigen Effekt festgestellt, dassoft nicht funktioniert, manchmal aber schon(?).Code: Alles auswählen
WriteData(NextPackFile(),PackFileSize())
Dagegen funktioniert folgendes immer:
Ist also die bessere Alternative.Code: Alles auswählen
file=NextPackFile() WriteData(file,PackFileSize())
OK, deswegen habe ich mir fast umsonst meine Haare vor Wut vom Kopf gerissen

Warum geht das obige Beispiel nicht? Nun, PackFileSize() liefert die Dateigröße der Datei, die NextPackFile() zurückgibt. Da PB aber anscheinend alle Parameter von hinten "aufdröselt" kann das obere Beispiel nicht funktionieren, sondern erst das zweite. Denn da wird ja erst NextPackFile() aufgerufen, sodass die zweite Funktion problemlos die Größe zurückgeben kann.
Ist das bei anderen Befehlen oder gar allen Befeheln genauso? Wie oben gezeigt, habe ich das bisher bei OpenNetworkconnection() festgestellt.
Arbeite PB bei If auch von rechts nach links? Wenn ja (oder auch nein), was ist, wenn ich, wenn's klappt, erst eine Datei erstellen will und dann die Datein reinschreiben will? geht dann
Code: Alles auswählen
If CreateFile(1, "C:\MyDatei.txt") And WriteData(*buffer, 4097)
Mit dieser "Tatsache" will ich niemanden anprangern, ich möcht' das "Phänomäen" einfach nur lüften...