Entwickler-Ecke
Sonstiges (Delphi) - Images in Array packen! So nicht möglich?
Bockscar - So 12.03.06 21:24
Titel: Images in Array packen! So nicht möglich?
Ich habe ein wenig im Forum gestöbert und vlt. eine Lösung für mein Problem gefunden.
Die sieht wie folgt aus:
Allerdings bekomme ich beim DELBET klicken einen EAccessviolationfehler in der Prozedur!
Deklaration:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| type Tplayermuenzen = array [1..100] of Tbitmap;
var p1_coins,p2_coins :Tplayermuenzen; |
Münzen zeichnen für Player1 (Player 2 Analog: Nur p1_coins = p2_coins)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| if croupier.show_active_player = 1 then begin p1_coins[coin_counter+1] := Tbitmap.create; if croupier.show_bets(bet) < 100 then begin with p1_coins[coin_counter+1] do begin Spielflaeche.l_tisch1.Canvas.Draw(x,y,p1_coins[coin_counter+1]); end; end else begin with p1_coins[coin_counter+1] do begin Spielflaeche.l_tisch1.Canvas.Draw(x,y,p1_coins[coin_counter+1]); end; end; |
Um bei Klick auf DELBETS wieder die Münzgrafiken zu löschen folgender Code in der clickprozedur
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| if croupier.show_active_player = 1 then begin for i:=1 to 100 do begin p1_coins[i].Width := 0; p1_coins[i].Height := 0; p1_coins[i].Free; end; end else begin p2_coins[i].Width := 0; p2_coins[i].Height := 0; p2_coins[i].Free; end; |
ich wäre für jede Hilfe dankbar!"
delfiphan - So 12.03.06 22:03
Ein TBitmap ist keine sichtbare Komponente... Die kann man nicht direkt anzeigen lassen. Es ist quasi nur ein Container für Bitmap-Graphiken.
Bockscar - So 12.03.06 22:09
Also soll ich TImage nehmen? oder was möchtest du mir damit sagen?
Ich kann wunderbar Grafiken erstellen, aber wenn ich eben auf diese zugreifen will und sie invisible und dann .free machen will gibts nen accessfehler
root_at_localhost - So 12.03.06 23:20
Delphi-Quelltext
1: 2:
| p2_coins[i].Width := 0; p2_coins[i].Height := 0; |
sind schlicht und einfach überflüssig
du initialisierst per
Delphi-Quelltext
1:
| p1_coins[coin_counter+1] := Tbitmap.create; |
aber ist da noch ne Schleife drumrum? Ich sehe nicht, dass du alle 100 Objekte initialisieren würdest, wenn du aber ein nicht existierendes Objekt per .Free freizugeben versuchst kriegst du eine Access Violation.
Bockscar - Mo 13.03.06 07:08
ok verstanden, aber ich will die nicht nur FREE machen, sondern eben auch invisible wie geht das ...
oder mach ich es grundlegend falsch?
Delete - Mo 13.03.06 09:22
Hallo,
so wie ich das sehe, möchtest du die Münzen auf deiner Spielfläche wieder unsichtbar machen, oder? Dazu mußt einen Teil des Canvas der Spielfläche, oder die ganze Spielfläche wieder neu zeichnen.
Der EAccessviolationfehler tritt vermutlich auf, weil nicht alle 99 Münzen auch initialisiert wurden.
Gruß Frank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!