![]() |
simple zuweisung funktioniert nicht
hallöle, ich bins wieder, ich hab mal wieder was einfaches schreiben wollen, hier der ausschnitt der nicht funktioniert:
Delphi-Quellcode:
das is der teil in der Auto-unit......
unit auto;
interface uses Graphics; type TAuto=class(TObject) private public v:Single; //Geschwindigkeit x, y:integer; //Position farbe:longint; //Lackierung constructor erzeugen(xpos,ypos:integer; color:longint); procedure schneller(dv:real); procedure bremsen (dv:real); procedure zeichnen(canvas:TCanvas); end; implementation constructor TAuto.erzeugen(xpos,ypos:integer; color:longint); begin x:=xpos; // y:=ypos; // falsche werte (aber xpos,ypos,color richtig!! farbe:=color; // end; in unit1 steht folgendes:
Delphi-Quellcode:
nun die frage! beim debugging mit F7 komm ich bis zu Zeile x:=xpos; (in unit Auto) wenn ich mir dann den wert für x anschaue liegt der exakt bei 167772182, y hat dann auch sonen utopischen wert, und farbe entspricht nicht dem wert von color!
procedure TForm1.btn_autoClick(Sender: TObject);
begin auto1.erzeugen(5,55,clNavy); end; Woran kann das denn liegen, das is doch das simpelste was es gibt, und meiner meinung nach kein fehler drin. ich hab ein Image mit Align=alClient auf der Form liegen, aber die das kann doch nicht der Grund sein oder? ich meine das er vielleicht mit der Position auf der Form, bzw. dem Image ducheinander kommt. was sagt ihr dazu? :? gruß haegar |
Und wenn du einen Schritt weitergehst. Was steht dann in x?
|
naja macht er ja dann nicht, kommt ja gleich programm absturz (bzw. felhermeldung von wegen "acess violation und so weiter") und dann kan ich nicht weitermachen
|
Du kannst den Constructor nicht wie eine normale Procedure verwenden. Er kann verwendet werden zum über diesen Constructor eine Instanz dieser Klasse zu erzeugen.
Delphi-Quellcode:
var
Pointer : TAuto; begin Pointer := TAuto.erzeuge( x, y, a); end; |
Das kann ja gar nicht funktionieren. Dein Konstruktur ist schon soweit korrekt, nur rufst du ihn falsch auf:
Delphi-Quellcode:
Du rufst hier eine Methode eines Objektes auf, das noch gar nicht existiert. So muss es richtig lauten:
auto1.erzeugen(5,55,clNavy);
Delphi-Quellcode:
Und der utopische Wert in der Variablen kommt daher, dass der Speicherbereich, in dem die Variable liegt, vorher nicht leer war. Das ist aber kein Problem, obiges verursacht den Fehler.
auto1 := TAuto.erzeugen(5,55,clNavy);
Edit: Mist, zu spät :shock: |
wie peinlich, naja kann jedem mal passieren, häät nur intensiver in mein büchlein schauen müssen, da steht das ja auch an einem beispiel erklärt ;)
danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 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