Deklariert aber nicht Definiert !?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

FOODy

Betreff: Deklariert aber nicht Definiert !?

BeitragDi, Okt 17, 2006 14:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.
Ich hab mal ne Frage...
Bei den älteren BM Version (<1.20) gabs bei sowas glaub ich einen Fehler: (Memory Access xxxxxxx oder sowas in der richtung von Fehler)
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
Print image.handle_x


image wird hier Deklariert, aber nicht definiert.
D.h. der speicher wurde noch nicht Reserviert?!
Aber warum kommt kein Fehler???

Das wollte ich mal gerne wissen..
Vllt verstehe ich ja was falsch ^^"



Gruß,
FOODy


EDIT:
Bei sowas kommt ein Fehler:
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
Print image.pixmaps[0].width
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
 

Dreamora

BeitragDi, Okt 17, 2006 14:26
Antworten mit Zitat
Benutzer-Profile anzeigen
dann musst du ne andere Version von BM 1.22 haben als ich, denn im Debug Build kommt ein Fehler, wie erwartet.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FOODy

BeitragDi, Okt 17, 2006 14:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso..
Ne ich hab hier auf 1.20 und zuhause 1.22.
Aber ich meine jetzt nicht denn Debugfehler. (Also Debug-Build aus)

Sondern den: "Unhandled Memory Exception Error" :/

Gruß,
FOODy


EDIT:
Wenn ich das Compile und Ausführe ist das der Output:
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
Print image.handle_x

Ausgabe:
Code: [AUSKLAPPEN]
Building untitled1
Compiling:untitled1.bmx
flat assembler  version 1.64
3 passes, 559 bytes.
Linking:untitled1.exe
Executing:untitled1.exe
0.000000000

Process complete


Und bei das:
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
Print image.pixmaps[0].width

Ausgabe:
Code: [AUSKLAPPEN]
Building untitled1
Compiling:untitled1.bmx
flat assembler  version 1.64
3 passes, 563 bytes.
Linking:untitled1.exe
Executing:untitled1.exe
Unhandled Memory Exception Error
Process complete



Dabei müsste beim ersten auch ein "Unhandled Memory Exception Error" kommen... (meiner Meinung nach)
Da die Instanz nicht existiert. (Hab sie ja nicht Definiert)
 

Dreamora

BeitragDi, Okt 17, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das beim zweiten ein Fehler kommt ist klar, da der Pixmap Array null ist.

Warum das beim ersten so arbeitet, ist mir aktuell leicht ein Rätsel.
Es gab letzthin im englischen Forum schon einen Thread und jetzt schonwieder, bezüglich SizeOf das total schwachsinnige Daten zurück gibt und dem GCMemAlloced das zum Teil scheinbar darauf hinweist, das auch nicht initialisierte Referenzen schon auf vollständige Objekte verweisen.

Das so etwas bei richtigen Pointern passieren kann ist klar, falls der Pointer nicht 0 ist. Da man dort auf Speicher zeigt wo irgend etwas drin stehen kann.

Aber ich ging eigentlich davon aus, das BM doch ein wenig intelligenter ist.
Aber dem scheint nicht so zu sein.

Am besten ins englische Bug Board posten. Noch ein weiterer Fehler im Compiler der unter 1.22 gefunden wurde ... wenns so weiter geht mit Compilerfehlern sind wir demnächst bei Version 1.0 Try 2 ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FOODy

BeitragDi, Okt 17, 2006 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach ein Compilerfehler..
Daran hab ich auch schon gedacht.

Aber das melden kann ruhig ein anderer machen Razz
Irgendwie post ich da net so gerne ^_^" (muss erstmal schönes Englisch lernen >_>)

Danke dir, Dreamora Very Happy

Gruß,
FOODy

EDIT:
@Dreamora:
Jo stimmt xD
Aber ich denke mal, dass der Fehler bestimmt schon gemeldet wurde. Smile
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
  • Zuletzt bearbeitet von FOODy am Mi, Okt 18, 2006 9:55, insgesamt einmal bearbeitet
 

Dreamora

BeitragDi, Okt 17, 2006 18:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Witz war gut. Bis anhin dürfen die US User da auch noch posten ... von daher darf da kein Anspruch an englisch gestellt werden ^^
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Markus2

BeitragMi, Okt 18, 2006 12:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde sagen die Struktur ist da aber hat kein Inhalt
und beim zweiten sprichst du den Inhalt an der nicht da ist .
Finde daran nix komisch .

FOODy

BeitragMi, Okt 18, 2006 12:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Eigentlich dürfte garnichts da sein...
Wenn man eine Variable Deklariert sagt man dem Compiler nur das es ab jetzt die Variable gibt.
Es darf aber noch kein speicher reserviert werden.
Zumindest nicht bei Typen wie TImage, TSound, etc. inkl. Selbstdefinierte Typen/Strukturen.

Falls ich aber falsch liege, bitte aufklären Very Happy

Gruß,
FOODy



EDIT:
Hier ein Beispiel:
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
If image Print "Exists: 1" Else Print "Exists: 0"
Print image.handle_x
If image Print "Exists: 1" Else Print "Exists: 0"


Ausgabe:
Code: [AUSKLAPPEN]
Building untitled1
Compiling:untitled1.bmx
flat assembler  version 1.64
3 passes, 849 bytes.
Linking:untitled1.exe
Executing:untitled1.exe
Exists: 0
0.000000000
Exists: 0

Process complete
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
 

Dreamora

BeitragMi, Okt 18, 2006 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein eigentlich liegst du richtig. Die Referenz zeigt auf null. Witzigerweise kommt noch nicht Mal dann ein Error wenn man explizit null zuweist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

FOODy

BeitragMi, Okt 18, 2006 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Man kann sogar ganz normal Werte zuweisen oO
Als ob es die Instanz gibt.

Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
If image Print "Exists: 1" Else Print "Exists: 0"
Print image.handle_x
If image Print "Exists: 1" Else Print "Exists: 0"
image.handle_x = 234
Print image.handle_x
If image Print "Exists: 1" Else Print "Exists: 0"


Ausgabe:
Code: [AUSKLAPPEN]
Building untitled1
Compiling:untitled1.bmx
flat assembler  version 1.64
3 passes, 1000 bytes.
Linking:untitled1.exe
Executing:untitled1.exe
Exists: 0
0.000000000
Exists: 0
234.000000
Exists: 0

Process complete


Ich denk mal das ist ein Bug...

Hier ein bisschen erweitert:
Code: [AUSKLAPPEN]
SuperStrict
Framework BRL.Max2D
Import BRL.StandardIO

Local image:TImage' = Null
If image Print "Exists: 1" Else Print "Exists: 0"
Print image.handle_x
If image Print "Exists: 1" Else Print "Exists: 0"
image.handle_x = 234
Print image.handle_x
If image Print "Exists: 1" Else Print "Exists: 0"
'image = New TImage
Print Object(image).toString()


Hier kommt ein Fehler.
Weil die Instanz nicht existiert <_>
(Wenn man die Zeile "'image = New TImage" "entkommentiert" geht es, weil die Instanz erstellt wird)


Gruß,
FOODy
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group