Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Planeten drehen (https://www.delphipraxis.net/148748-planeten-drehen.html)

Noob1990 7. Mär 2010 18:06


Planeten drehen
 
Hi ich programmier schon so seit einen Jahr delphi habe die 2005er personal edition und mach hin und wieder kleine Programme
jetzt wollte ich mich mal aber an etwas großes wagen: Ein Spiel.
Es ist ein Weltraumspiel
Grafiken habe ich schon gemacht
nun ist aber ein Problem aufgetreten ich wollte das sich der Planet um seine eigene Achse dreht und habe dann deshalb 240 einzel Bilder entworfen die immer in eine TImage datei geladen werden das durch diverse Schleifen geregelt wird
nur gibt er mir beim starten des Programmes eine Fehler Meldung manchmal nicht aber dann verschwindet einfach meine TImage Dateei bzw picture wird auf ohne gesetzt warum auch immer
naja lange rede kurzer Sinn hier ist mein Code kann mir jmd sagen wo der Fehler liegt
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
   Image1,Image2: TImage;
    procedure Image1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Planet:array[1..240] of tpicture;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i,x:integer;
dateiname:string;
begin

for i:=1 to 240 do
  begin
   dateiname:='p'+ inttostr(i);
   planet[i]:= Tpicture.Create;
   planet[i].loadfromfile('Planet1/' + dateiname +'.jpg') ;

  end;




end;

procedure TForm1.Image1Click(Sender: TObject);
var
x:integer;
begin



for x:=1 to 240 do
 begin
  Image1.Picture:=Planet[x];
  sleep(20);
 end


end;

end.
für weitere Anregungen bin ich gerne offen :D

Namenloser 7. Mär 2010 18:12

Re: Planeten drehen
 
Relative Pfadnamen sind immer ein Glücksspiel. Probier es stattdessen mal mit absoluten:
Delphi-Quellcode:
var
  BaseDir: string;
begin
  // ParamStr(0) enthält den gesamten "Aufrufnamen" des Programms
  // z.B. "C:\Program files\dingsbums\programm.exe -parameter1 -parameter2"
  BaseDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));
  // In BaseDir steht jetzt ausgehend von obigem Beispiel
  // "C:\Program files\dingsbums\"

  {...}

  planet[i].loadfromfile(BaseDir + 'Planet1\' + dateiname + '.jpg');
Edit: Was auch noch wichtig zu wissen wäre, wäre WELCHE Fehlermeldung dir angezeigt wird. So können wir nämlich nur rumraten.

Noob1990 7. Mär 2010 18:21

Re: Planeten drehen
 
hmmm kommich jetzt wollte ichs noch mal starten um die fehler meldung zu lesen aber jetzt kommt keine aber beim onklick auf die image passiert auch nix grad -.-
hmm naja egal wo wird den der pfad von parameter(0) festegelegt?

Namenloser 7. Mär 2010 18:29

Re: Planeten drehen
 
ParamStr wird automatisch von Delphi bzw. Windows beim Programmstart mit dem richtigen Wert gefüllt.

Noob1990 7. Mär 2010 18:38

Re: Planeten drehen
 
also brauch ich quasi nur
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
i,x:integer;
dateiname:string;
begin

for i:=1 to 240 do
  begin
   dateiname:='p'+ inttostr(i);
   planet[i]:= Tpicture.Create;
   planet[i].loadfromfile('Planet1/' + dateiname +'.jpg') ;

  end;




end;
durch
Delphi-Quellcode:
var
 dateiname, BaseDir: string;
 i:integer;
begin
 for i:=1 to 240 do
 begin
  dateiname:='p'+ inttostr(i);
  BaseDir := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)));

  planet[i].loadfromfile(BaseDir + 'Planet1\' + dateiname + '.jpg');
 end
end;
zu ersetzen und dann funktionier das also dann auch die schlleife die in TImage1 onclick stehent?

DeddyH 7. Mär 2010 18:44

Re: Planeten drehen
 
Das sollte so sein, dort wird ja nicht mehr auf die Festplatte, sondern auf das Array zugegriffen.

Noob1990 8. Mär 2010 14:51

Re: Planeten drehen
 
funktioniert immer noch nicht beim klicken auf die image datei rechnet er kurz iwas und dann verschwindet die Image datei ohne sich geändert zu haben

DeddyH 8. Mär 2010 15:08

Re: Planeten drehen
 
Was soll dort eigentlich passieren? Du gehst das ganze Array durch und lädst jede Bitmap einmal in das Image. Wozu soll das gut sein?

Namenloser 8. Mär 2010 15:11

Re: Planeten drehen
 
Mal mit Application.ProcessMessages probiert?
Delphi-Quellcode:
for x := 1 to 240 do
begin
  Image1.Picture := Planet[x];
  Application.ProcessMessages;
  sleep(20);
end;

DeddyH 8. Mär 2010 15:13

Re: Planeten drehen
 
Achso, das soll eine Animation werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz