Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anweisungen werden nicht durchgeführt. Warum? (https://www.delphipraxis.net/60639-anweisungen-werden-nicht-durchgefuehrt-warum.html)

nowmaxx 11. Jan 2006 13:21

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Oben hab ich mal geschrieben:
Zitat:

Wenn ich jetzt diese eine Programmcodezeile (durch Kommentar gekennzeichnet) einfüge, werden dir vorigen Anweisungen nicht mehr durchgeführt.
:lol:
Aber woran könnte das liegen?
Muss der Befehl, der auf das Label zugreift vor dem zeichnen der BitMaps? Wenn ja, warum? eigentlich müsste das doch keine Rolle spielen?

Oxmyx 11. Jan 2006 14:15

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Wenn du die Bilder der Monster nur einmal zeichnest, dann sind sie beim nächsten Repaint-Ereignis wieder weg. Du musst also immer wenn ein Repaint- oder Refreshereignis ausgelöst wird, die Bilder neu zeichnen.

Desweiteren musst du deine Objekte wieder freigeben, du rufst zwei mal Monster := cMonster.Create auf, ohne die Objekte auch wieder freizugeben. So müllst du den Speicher zu.

nowmaxx 11. Jan 2006 14:54

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Die .Free Methoden hab ich mittlerweile schon eingefügt. Danke!
Doch ich hab versucht, den Befehl, der das Lebal füllt vor dem Zeichnen der Monster unterzubringen. Somit wird ja nach dem Zeichnen kein neuer Repaint ausgeführt. Doch funktioniet es immer noch nicht... :wall:

bluescreen25 11. Jan 2006 19:43

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Hallo, wenn man im Objektinspektor lLife auf visible = false setzt, dann klappts so: (sprich beim starten des Programms ist lLife.visible := false;)

Delphi-Quellcode:
...
Monster.Show_Life(50,405,Monster.Life_max,Monster.Life_max,fKampf.Canvas);
  //Wenn ich die Zeile drin hab, funktioniert's nicht....??????
  fKampf.lLife.Caption := format('%d/%d',[Monster.Life_max,Monster.Life_max]);
  fKampf.lLife.Visible:=true;
...
Gruß bluescreen25

nowmaxx 11. Jan 2006 20:41

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Funktioniert auch nicht...

bluescreen25 11. Jan 2006 20:49

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Zitat:

Zitat von nowmaxx
Funktioniert auch nicht...

doch sicher.....es ging bei mir erst, nachdem ich das Label auf visible := false gesetzt hatte,
und nach der Formatierung erst auf visible := true;

Der Fehler war doch, das die Monster beim Starten nur kurz aufflackerten, anstatt konstant gezeichnet zu bleiben.

du kannst es auch im Ereignis TfKampf.FormCreate einsetzen, geht genauso gut.

Delphi-Quellcode:
procedure TfKampf.FormCreate(Sender: TObject);
begin
 lLife.Visible:= false; //<-----
end;
Allerding habe ich dies anhand deines Projektes zum runterladen gemacht. Du sagst, du hast die free-Methoden eingesetzt, da weiss ich natürlich nicht, was du da gemacht hast !

Ich habe dies mal so gelöst, es wird kein weiterer Speicher mehr abgenommen.
Delphi-Quellcode:
procedure cMonster.Show_Monster(x,y:Integer; filename:string; Canvas:TCanvas);
var Monster : TBitMap;
begin
  Monster := TBitMap.Create;
  Monster.LoadFromFile(filename);
  Monster.Transparent := True;
  Canvas.Draw(x,y,Monster);
  Monster.Free; // <-----
end;

nowmaxx 11. Jan 2006 21:28

Re: Anweisungen werden nicht durchgeführt. Warum?
 
Hatte die Reihenfolge verändert. Jetzt funktioniert's! Danke! :cheers:
Doch verstehen kann ich's immer noch nicht so richtig...
Naja, Problem gelöst! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 Uhr.
Seite 2 von 2     12   

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