![]() |
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 |
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. |
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 |
Re: Delphi6 Schulprojekt Eisenbahn
cool danke...werd das ma versuchen ;) ...und funzt...genial... thx ;)
|
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:
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.
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 Gruß oldmax |
Re: Delphi6 Schulprojekt Eisenbahn
gutes timing... hab grad das erste problem gelöst ;P
werd dann wohl gleich weiter machen thx |
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.
|
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 |
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:
Also so finde ich solche Geschichten am EinfachstenTAusrichtung = (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; :angel: |
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 10:23 Uhr. |
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 by Thomas Breitkreuz