Ein Image in eine Structure Speichern

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

Ein Image in eine Structure Speichern

Beitrag von silbersurfer »

Hallo Leute habe da ein kleines Problem

Es geht darum ein Image in einer Structure zu Speichern was ja normal auch kein Ding ist
z.b.

Code: Alles auswählen

Structure Bild
	img.i
EndStructure

Define Image.Bild
Image\img=CreateImage(#PB_Any,800,600,32)
Da ich noch neu mit PureBasic unterwegs bin, sind so manche dinge für mich unverständlich sowie auch dieses hier !
Ich habe mich mit Interface beschäftigt und war begeistert wie schön man damit Structure Händeln kann
Anbei noch der VideoLink wo Interface als Tutorial erklärt wird echt super https://www.youtube.com/watch?v=nX7ycvE ... mws4qHb-yi
z.b. Hier mein Interface mit Structure und deren Proceduren

Code: Alles auswählen

Interface _Quad
	KillQuad()
	SetQuad(x.f,y.f,b.f,h.f,img.i=#False)
	CheckQuad.i(x.f,y.f)
	GetQuadImage.i()
EndInterface

Structure QuadPoint
	*quadZeiger
	x.f
	y.f
	b.f
	h.f
	img.i
EndStructure

Procedure		KillQuad			(*this.QuadPoint)
	If *this\img
		FreeImage(*this\img)
	EndIf 	
	ClearStructure(*this,QuadPoint)
	FreeMemory(*this)	
EndProcedure

Procedure		SetQuad			(*this.QuadPoint,x.f,y.f,b.f,h.f,img.i=#False)
	With *this
		\x	= x
		\y	= y
		\b	= b
		\h	= h
		\img  =img
	EndWith	
EndProcedure

Procedure.i		CheckQuad		(*this.QuadPoint,x.f,y.f)
	If x=>*this\x And y=>*this\y And x<*this\b And y<*this\h
		ProcedureReturn  #True
	EndIf 
	ProcedureReturn  #False	
EndProcedure

Procedure		NewQuad			()
	Protected *this.QuadPoint	=	AllocateMemory(SizeOf(QuadPoint))
	If (Not *this)
		ProcedureReturn #False
	EndIf 
	
	With *this
		\quadZeiger=?quadZeiger
		\x	=	0
		\y	=	0
		\b	=	0
		\h	=	0
		\img = #False
	EndWith	
	ProcedureReturn *this	
EndProcedure	

Procedure.i 	GetQuadImage	(*this.QuadPoint)
	ProcedureReturn *this\Img
EndProcedure

DataSection
	quadZeiger:
	    Data.i @KillQuad(),@SetQuad(),@CheckQuad(),@NewQuad(),@GetQuadImage()
EndDataSection	
Soweit so gut....
Nun frage Ich mich warum dann diese nicht geht :?: :?: :?:

Code: Alles auswählen

Define image1._Quad
;hier wird der Speicher Reserviert
image1=NewQuad()
;hier das Image in die Structure Gespeichert 
image1\SetQuad(0,0,600,800,CreateImage(#PB_Any,800,600,32))
;und hier normal wieder ausgelesen Laut debug kommt auch die Zahl
SetGadgetState(imgWin,ImageID(image1\GetQuadImage()))
Dann schmeißt der Debugger "Image ist nicht Initialisiert" aber Warum das kann doch nicht sein :?: :?: :?:

wäre Super wenn einer eine Idee hat
Gruss Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Ein Image in eine Structure Speichern

Beitrag von matbal »

Deine Pointer-Liste in der DataSection stimmt nicht mit dem Interface überein.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Ein Image in eine Structure Speichern

Beitrag von NicTheQuick »

Genau. "@NewQuad()" muss da raus.

Freut mich übrigens, dass mein Tutorial Früchte trägt. :allright:
Benutzeravatar
silbersurfer
Beiträge: 175
Registriert: 06.07.2014 12:21

Re: Ein Image in eine Structure Speichern

Beitrag von silbersurfer »

Deine Pointer-Liste in der DataSection stimmt nicht mit dem Interface überein.
man man das hätte Ich auch selber sehen müssen.
Danke matbal, NicTheQuick für die schnelle hilfe :allright: :allright: :allright:

Ps. NicTheQuick ja dein Tut ist echt super gut erklärt, solltest mehr davon machen
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Antworten