Blitz übergibt Parameter in falscher Reihenfolge?!
Übersicht

PacManiBetreff: Blitz übergibt Parameter in falscher Reihenfolge?! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallihallo,
ich habe zu später Stunde ein wirklich sehr merkwürdiges und grässliges Problem: Blitz scheint bei mir Parameter in falscher Reihenfolge zu übergeben. Aber erst einmal Code: Bei einem Funktionsaufruf lese ich 4 Strings aus einer Datei. Diese werden dann in vier Textboxen reingeschrieben. Aber immer steht der falsche Text in der falschen Textbox! An meinen Funktionen kann es eigentlich garnicht liegen, dazu gleich mehr. Code: [AUSKLAPPEN] SetupProperties(ReadString(File), ReadString(File), ReadString(File), ReadString(File))
Das ist im Grunde das Grundgerüst. Erstens habe ich das Problem auch mit ReadByte und den anderen Read-Funktionen. Da werden Bytes, wenn sie so beim Aufruf einer Funktion gelesen werden, auch in irgendeiner mir nicht nachvollziehbaren Reihenfolge den Funktionen übergeben. Zweitens: In der SetupProperties-Funktion werden die Argumente definitiv in der richtigen Reihenfolge verwertet: Code: [AUSKLAPPEN] Function SetupProperties(Author$, Name$, Music$, Powerwall$)
,
WindowPropertiesTextAuthor\Value = Author WindowPropertiesTextName\Value = Name WindowPropertiesTextMusic\Value = Music WindowPropertiesTextPowerwall\Value = Powerwall End Function Drittens: Dieser Code funktioniert genau so wie er soll. Dabei ist die Logik dahinter doch absolut dieselbe, oder habe ich da was beim Lesen von binären Daten falsch verstanden? Code: [AUSKLAPPEN] Local AuthorName$ = ReadString(File)
Local LevelName$ = ReadString(File) Local MusicFile$ = ReadString(File) Local PowerwallTexture$ = ReadString(File) DebugLog "AuthorName = " + AuthorName DebugLog "LevelName = " + LevelName DebugLog "MusicFile = " + MusicFile DebugLog "PowerwallTexture = " + PowerwallTexture SetupProperties(AuthorName, LevelName, MusicFile, PowerwallTexture) Was ist hier los? Ich dreh' gleich durch... nein, bin ich schon ![]() |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube das liegt einfach an der Eigenheit aller Compiler, dass sie Parameter rückwärts übergeben. Zuerst kommt der letzte, dann der vorletzte ...
Das führt dazu, dass das letzte ReadString zuerst verarbeitet wird, dann das vorletzte ... Das wäre meine Vermutung. mfg Thunder Edit: Habe es gerade mit Holzchopf's Code getestet. Ist doch nicht ganz von hinten nach vorne. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
- Zuletzt bearbeitet von Thunder am Mo, Jan 31, 2011 0:08, insgesamt einmal bearbeitet
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] SomeFunction(FunctionA(), FunctionB(), FunctionC(), FunctionD(), FunctionE())
WaitKey() Function SomeFunction(A%, B%, C%, D%, E%) End Function Function FunctionA%() Print("A") End Function Function FunctionB%() Print("B") End Function Function FunctionC%() Print("C") End Function Function FunctionD%() Print("D") End Function Function FunctionE%() Print("E") End Function -> Code: [AUSKLAPPEN] D
E C B A Vermutung bei F(A1, A2, ..., An) wird An-1, An, An-2, An-3, ... A1 ausgewertet. Ist das deterministisch? Edit: In Java ist die Auswertung der Argumente übrigens von links nach rechts |
||
vertex.dreamfall.at | GitHub |
- Zuletzt bearbeitet von Vertex am Mo, Jan 31, 2011 0:02, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist nicht ganz rückwärts. Aber ja, die Reihenfolge ist definitiv nicht vorwärts...
BlitzBasic: [AUSKLAPPEN] Global args$ Sieht ganz so aus, als ob zuerst der vorletzte, dann der letzte Parameter und schlussendlich noch die anderen aber in umgekehrter Reihenfolge verarbeitet würden. Aber ich würde nichts darauf verwetten wollen, dass darauf Verlas ist ![]() mfG Holzchopf Edit Gna... Da war der Vertex doch grad schneller =( |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das ist ja der blanke Horror! Na toll... also werde ich jetzt gezwungen, erst zwischenzuspeichern, ja? :S Ekelerregend. Aber naja. | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jop, in BB als auch in BMax ist die Reihenfolge der Auswertung NICHT strikt festgelegt. Daher sollte man sehr vorsichtig mit sich gegenseitig beeinflussenden Parametern beim Aufruf einer Funktion sein. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
PacMani |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich schwöre: Ich mache es nie wieder. Zumindest beim Dateienlesen.
Grrr ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group