![]() |
Umstieg von C++ zu Delphi - Blicke nicht mehr durch
Hi,
ich habe folgendes Problem: Ich beherrsche C++ relativ gut und arbeite damit seit mehreren Jahren, nun muss ich allerdings ein Programm in Delphi schreiben (ich verwende Delphi 7 personal). Als kleine Tests hat mir ein Freund eine Aufgabe aus dem Informatik-Unterricht gegeben, welche ich nun versuche zu erfüllen. Ich soll einen Zug (bestehend aus mehreren Waggons) erzeugen, der sich praktisch hin- und herbewegt. Mein Gedanke: Eine Klasse waggon erstellen, welche jeweils einen Zeiger auf den Waggon hinter sich selbst enthält. Das Hauptfenster enthält also nur den ersten Waggon. Soweit, so gut. Ich habe jetzt den folgenden Code: main.pas
Delphi-Quellcode:
waggon.pas
unit main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, waggon; type TForm1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; BitBtn4: TBitBtn; GroupBox1: TGroupBox; procedure FormCreate(Sender: TObject); private { Private declarations } MainWaggon: TWaggon; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin MainWaggon.Create(GroupBox1, 'lok.png', 20); end; end.
Delphi-Quellcode:
unit waggon;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TWaggon = class constructor Create(main_form: TGroupBox; filename: string; position_x: Integer); private { Private declarations } Image: TImage; NextWaggon: TWaggon; ParentWidget: TGroupBox; public { Public declarations } end; implementation constructor TWaggon.Create(main_form: TGroupBox; filename: string; position_x: Integer); begin NextWaggon := nil; ParentWidget := main_form; Image.Create(ParentWidget); Image.Picture.LoadFromFile(filename); Image.Top := 20; Image.Top := position_x; end; end. Das funktioniert allerdings nicht. Wenn der Konstruktor der waggon-Klasse aufgerufen wird, erhalte ich bei "NextWaggon := nil;" immer eine exception. Kommentiere ich die Zeile aus, erhalte ich eine exception in der nächsten Zeile etc. Was mache ich falsch? Ich durchblicke auch noch nicht ganz, wann man einen Zeiger und wann man ein richtiges Objekt benutzt (in C++ wären die Komponenten in der Klasse TForm1 ja alles Zeiger, hier sind sie es scheinbar nicht... warum?) Später soll es auch möglich sein, einem Waggon einen Anhänger-Waggon zuzuteilen, dazu will ich dann der Membervariable NextWaggon einfach ein anderes Objekt der Klasse TWaggon zuweisen, muss dazu NextWaggon ein Zeiger sein? Kann vlt. jemand den obigen Code mal "korrigieren"? Das hilft mir nämlich wahrscheinlich, meine Fragen zu klären... Vielen Dank D. [edit=mkinzler]Code-Tags durch Delphi-Tags ersetzt Mfg, mkinzler[/edit] |
Re: Umstieg von C++ zu Delphi - Blicke nicht mehr durch
Delphi-Quellcode:
MainWaggon := TWaggon.Create(GroupBox1, 'lok.png', 20);
Delphi-Quellcode:
Image := TImage.Create(ParentWidget);
|
Re: Umstieg von C++ zu Delphi - Blicke nicht mehr durch
Außerdem
Delphi-Quellcode:
type
TWaggon = class constructor Create(main_form: TGroupBox; filename: string; position_x: Integer); destructor Destroy;override; private { Private declarations } Image: TImage; NextWaggon: TWaggon; ParentWidget: TGroupBox; public { Public declarations } end; implementation constructor TWaggon.Create(main_form: TGroupBox; filename: string; position_x: Integer); begin inherited Create; NextWaggon := nil; ParentWidget := main_form; Image := TImage.Create(ParentWidget); Image.Parent := ParentWidget; Image.Picture.LoadFromFile(filename); Image.Top := 20; Image.Top := position_x; end; destructor TWaggon.Destroy; begin Image.Free; inherited; end; |
Re: Umstieg von C++ zu Delphi - Blicke nicht mehr durch
Man könnte sich auch überlegen eine andere Basisklasse dafür zu nehmen ( z.B. ein TImage/TPaintBox o.ä.)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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-2025 by Thomas Breitkreuz