AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Lösung für 2D Brett
Thema durchsuchen
Ansicht
Themen-Optionen

Lösung für 2D Brett

Offene Frage von "KahPee"
Ein Thema von KahPee · begonnen am 13. Mai 2009 · letzter Beitrag vom 18. Mai 2009
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#31

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 18:13
Lass dir Zeit will niemanden hetzten mache sowieso gleichmal Pause:

wenn man dies hier benutzt: ExtractFilePath(ParamStr(0)) + dann braucht man aber ein Teil des Programms der das ganze installiert oder? gibt es soetwas vorgefertigt? Ansonsten würde ich dran ja nochmal ne weile sitzen

schon mal vielen Dank im vorraus

KahPee
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#32

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 18:38
ExtracFilePath(ParamStr(0)) gibt genau den Pfad an, indem sich deine ausführende Exe befindet


Check mal Posteingang
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#33

Re: Lösung für 2D Brett

  Alt 15. Mai 2009, 19:46
Könnte das Problem daran liegen, dass ich mit Delphi4 arbeite?

Wüsste jemand wie das da geht?
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#34

Re: Lösung für 2D Brett

  Alt 16. Mai 2009, 09:00
So jetzt mal nen Umfangreiches Update zu dem Thema:

Ich habe inzwischen ne ganze Ecke rumgespielt und bin auch schon weitergekommen.

Im Moment gibt es allerdings immer noch ein paar Fehler.

piclist[0].Loadfromfile(ExtractFilePath(ParamStr(0)) + 'pictures\bild1.bmp'); Die Zeile bringt beim Kompilieren kein Problem aber wenn das ganze durch das Programm abgespielt wird dann:

Zitat:
Im projekt Projekt1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Zugriffsverletzung bei der Adresse 0045A3B5 in Modul 'Projekt1.exe'.Lesen von Adresse 00000000'. Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzten.
Hier nochmal Teile des Programms denn die ganze Grafikgeschichte betrifft:

Die Deklarationen (global! nicht lokal)
Delphi-Quellcode:
type
Tpicpos = record
           top,
           left: integer;
          end;

Tfield = record
           //noch andere Variablen
           pic: Tbitmap;
           picpos: Tpicpos;
        end;


var piclist: array[0..11] of TBitMap;
   fields: array[1..7,1..7] of Tfield;
Die Zusweiung
Delphi-Quellcode:
piclist[0].Loadfromfile(ExtractFilePath(ParamStr(0)) + 'pictures\bild1.bmp');
With fields[1,1] do //für Feld(1,1)
     begin
      pic:= Tbitmap.create; //fields.pic erzeugen
      pic.assign(piclist[0]); // oben geladenes Bild zuweisen
      picpos.top:=21;
      picpos.left:=212;
{Dies sind die beiden Variablen für die Bildposition allerdings gelingt es mit nicht das auch auf das Bild zu beziehen. pic.top / pic.left gibt Fehler aus ([Fehler] Unit1.pas(175): Undefinierter Bezeichner: 'top'). Genauso: pic.picture.top oder pic.picture.bitmap.top}
end;
Das ist eigentlich im Moment der Komplette Teil, der die Grafiken betrifft.

_____
noch ein Update:

Wenn ich dem:
piclist[0].Loadfromfile(ExtractFilePath(ParamStr(0)) + 'pictures\bild1.bmp'); einpiclist[0]:=Tbitmap.create; voranstelle bekomme ich nicht mehr den AccessViolation Fehler, allerdings wird das Bild dann auch nicht angezeigt. Was ganz einfach daran liegen könnte, dass dem Bild keine Position zugewiesen wird.

Vielen Dank an alle Helfer, ich hoffe, dass sich der Fehler iwie noch finden lässt


mfg KahPee
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#35

Re: Lösung für 2D Brett

  Alt 18. Mai 2009, 08:28
Das Bitmap existiert doch schon, du musst keine neue Bitmap erzeugen sondern nur das Bild aus der Liste der Feldvariablen zuweisen.
Delphi-Quellcode:
With fields[1,1] do //für Feld(1,1)
begin
  pic := piclist[0]; // oben geladenes Bild zuweisen
  picpos.top:=21;
  picpos.left:=212;
end;
Für was du allerdings picpos benötigst ist mir schleierhaft.
Die Position auf dem Bildschirm ergibt sich doch aus der Position im Array und der Breite der Bilder + Rand.

Das Zeichnen auf dem Bildschirm musst du natürlich selbst vornehmen.
Nimm einfach eine TPaintbox und im Ereignis OnPaint zeichnest du alle Felder auf den Canvas diese Komponente.
(Hier würde ich auch die Position berechnen.)
Das Neuzeichnen nach Änderungen am Array löst man mit Paintbox1.Invalidate aus.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz