Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi6 Schulprojekt Eisenbahn (https://www.delphipraxis.net/81590-delphi6-schulprojekt-eisenbahn.html)

DiePest 29. Nov 2006 21:54


Delphi6 Schulprojekt Eisenbahn
 
Hi,

in der Schule programmieren wir im Moment einen Gleisplan für ein Eisenbahnmodel.
Ohne zu wissen, was auf mich zu kommt habe ich diesen Gleisplan
aus Timages erstellt. Daher meine Frage:

1.
Ich habe eine GERADESCHIENE als TImage ausgewählt und in die Zwischenablage kopiert,
jetzt möchte ich dieses Bild auf ein anderes leeres TImage setzten. Wie geht das.

2.
Ich Habe ein TImage und möchte nun den Namen des daraufgesetzen BMP wissen.

3.
Wie bekomme ich nur die Zahlen ausgegeben von "Image66" --> also nur die 66

reicht erstma...ttthhhx

Cöster 30. Nov 2006 13:23

Re: Delphi6 Schulprojekt Eisenbahn
 
1. Während der Entwicklungszeit oder erst zur Laufzeit?
2. Hm, ist glaub ich so nicht möglich.
3. Über die Eigenschaft Name erhälst du den Namen eines Images in Form eines Strings. Mit der Funktion Copy (siehe Hilfe) kann man Teile eines Strings erhalten.

Relicted 30. Nov 2006 13:34

Re: Delphi6 Schulprojekt Eisenbahn
 
zu 2.:

ich gehe jetzt mal davon aus dass du mit dem namen überprüfen willst um was für eine art von schiene es sich handelt..

wenn es so ist dann kleiner tipp: entweder leite dir eine klasse von timage ab welches du verwenden kannst oder was wesentlich einfacher ist definier dir konstanten mit wert 0...n die jeweils einen typ definiert also z.b. cnGerade = 1;

was du damit anfangen kannst? ganz einfach: speicher die zahl/konstante im image.tag attribut. damit solltest du ohne probleme bestimmen können was für ein image geladen ist.

sollte ich mit meiner vermutung falsch liegen: vergiss was ich gesagt hab :)

gruß
reli

DiePest 30. Nov 2006 13:55

Re: Delphi6 Schulprojekt Eisenbahn
 
cool danke...werd das ma versuchen ;) ...und funzt...genial... thx ;)

oldmax 30. Nov 2006 14:00

Re: Delphi6 Schulprojekt Eisenbahn
 
Hi
Die Frage, wie du an die Zahl hinter "Image" kommst, ist einfach zu beantworten. Image hat genau 5 Zeichen, also fängt deine Zahl beim 6. Zeichen an und ist entsprechend Anzahl aller Zeichen-5 lang.
Programmiert sieht das so aus:
Delphi-Quellcode:
Var

  Zahl, Name : String; // Diese beiden Variablen deklarieren wir mal ...


  Name:='Image56';
  Zahl:=Copy(Name,6,Length(Name)-5); // 

Kopiere ab 6.Zeichen Gesamtzahl an Zeichen -5 vom Image
Gesamtzahl der Zeichen sind 7, also kopierst du ab dem 6. Zeichen 2 Zeichen. Damit ist es egal, ob Image 56, Image4 oder image73343. Du erhälst immer die Zahl.
Gruß oldmax

DiePest 30. Nov 2006 14:09

Re: Delphi6 Schulprojekt Eisenbahn
 
gutes timing... hab grad das erste problem gelöst ;P
werd dann wohl gleich weiter machen thx

Namenloser 30. Nov 2006 14:49

Re: Delphi6 Schulprojekt Eisenbahn
 
Also eleganter und performanter wäre es, ein array zu benutzen und zu zeichnen. Denn VCL ist für sowas nicht sehr gut geeignet.

Relicted 30. Nov 2006 14:54

Re: Delphi6 Schulprojekt Eisenbahn
 
schulaufgaben haben aber ne andere wertigkeit :) ... funktion > performance

aber ich stimme dir da zu dass es performance mäßig bessere lösungswege gäbe

gruß
Reli

Angel4585 30. Nov 2006 14:56

Re: Delphi6 Schulprojekt Eisenbahn
 
Also ich würde ein record machen in welches ich Bild und Daten zu dem Bild speichere und das dann in ein record, sowas:

Delphi-Quellcode:

TAusrichtung = (ageradewaagerecht,ageradesenkrecht, alinkskurvelo,alinkskurvelu,alinkskurveru,alinkskurvero, arechtskurvelo,arechtskurvelu,arechtskurveru,arechtskurvero);

TSchienenRecord = record
  Bild : TBitmap;
  //Was dir an Infos einfällt
  end;



TSchienenFeld = array[TAusrichtung]of TSchienenRecord

var schienen : TSchienenfeld;

procedure wasweisich;
begin
schienen[ageradewaagerecht].Bild:=LadeBild;
end;
Also so finde ich solche Geschichten am Einfachsten
:angel:

Luckie 30. Nov 2006 15:03

Re: Delphi6 Schulprojekt Eisenbahn
 
Ich würde mir erstmal eine gescheite Klassenstruktur entwerfen und die Records gleich wieder vergessen, denn sie verleiten dazu nicht objektorientiert zu denken.

Man kann sich zum Beispiel eine Klasse TSchiene erstellen. Davon kann man dann die Klassen TGerade und TKurve ableiten. Dan braucht man noch eine Klasse für den Gleisplan: TGleisplan, welche die Positionen der Objekte speichert und welche Methoden hat eine Schiene hinzuzufügen, zu entfernen und das ganze zeichnen kann.


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

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