 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.07.2013, 10:43 Titel: GET "memory corrupt" ? |
|
|
Hey
Ich arbeite gerade ein wenig an einer Funktion, die einzelne Bilder aus einem Tileset laden soll. Dummerweise klappt dies nur, wenn ich bloß ein Tile lade und anzeige. Das Programm startet zwar, zeigt aber keine Bilder an, sobald es mehr als 1 ist. Im Terminal erscheint folgender Fehler:
Terminal hat Folgendes geschrieben: | *** glibc detected *** ./test: malloc(): memory corruption: 0x0909f2c0 *** |
So sieht der Code aus:
Code: | ScreenRes 1024,768,32
Type TTile
As String nam
As Integer id
As Any Ptr texture
End Type
Dim Shared As TTile Tile(3)
Dim Shared As Any Ptr TexturePtr
TexturePtr=ImageCreate(256,256)
Bload "texture.bmp",TexturePtr
Declare Sub LoadTile(id As Integer,x As Integer,y As Integer)
'Später in einer Forschleife laden
LoadTile(1,0,0)
LoadTile(2,16,0)
LoadTile(3,32,0)
Do
Sleep 1,1
ScreenLock
Cls
Put (0,0),Tile(1).Texture,Trans
Put (16,0),Tile(2).Texture,Trans
Put (32,0),Tile(3).Texture,Trans
ScreenUnLock
Loop Until Inkey=Chr(27)
End
Sub LoadTile(id As Integer,x As Integer,y As Integer)
With Tile(id)
.texture=ImageCreate(15,15)
Get TexturePtr,(x,y)-(x+15,y+15),.texture
End With
End Sub |
Generell scheint die Grafikausgabe nicht zu funktionieren, sobald mehr als ein Tile geladen wurde.  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 07.07.2013, 11:09 Titel: |
|
|
probier mal obs bei +14 +14 auch auftritt? _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4702 Wohnort: ~/
|
Verfasst am: 07.07.2013, 11:13 Titel: |
|
|
bzw. mit IMAGECREATE(16, 16) statt ...(15,15). Der gelesene Bereich ist jedenfalls zu groß. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 07.07.2013, 11:13 Titel: |
|
|
Wow, das tut es nicht. Wieso sind es immer die dummen Fehler, die ich mache? Darauf hätte ich auch kommen sollen.
Aber danke  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 07.07.2013, 13:32 Titel: |
|
|
Weil die alte QB-Syntax solche dummen Fehler geradezu proviziert. (Puffergröße ist bekannt, wozu also noch explizit angeben, wie viel man GETten will?) _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|