![]() |
Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
Hallo, bin neu hier. Wenn irgendwas nicht passt bitte ich das zu entschuldigen, werde es in Zukunft besser machen.
Ich wollte gerade mit Lazarus ein Programm zur Verarbeitung von Vektoren schreiben. Leider scheitert es bei der Übergabe von Variablen, Zahlen oder Inhalten aus einem Edit-Feld an eine Eigenschaft des Objektes. Das Projekt kompiliert Problemlos, jedoch kommt es zu einem SigSegV-Fehler sobald der Button betätigt wird. Können Sie einen Fehler entdecken? Hier der Programm-Code:
Delphi-Quellcode:
Danke schon einmal für eure Hilfe.
Unit1;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type TVektor = class xwert, ywert, zwert: real; constructor create; // function betrag: real; end; { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { private declarations } public { public declarations } VektorA: TVektor; end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.FormCreate(Sender: TObject); begin VektorA.create; end; procedure TForm1.Button1Click(Sender: TObject); begin VektorA.xwert := StrToFloat(edit1.text); end; procedure TForm1.FormDestroy(Sender: TObject); begin VektorA.free; end; constructor TVektor.create; begin inherited create; xwert := 0; ywert := 0; zwert := 0; end; end. |
AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
Willkommen in der DP :dp:,
benutz doch bitte in Zukunft die Delphi- statt der Zitat-Tags, das macht den Code besser lesbar. Zum Problem: mach mal aus dem Zitat:
Delphi-Quellcode:
VektorA := TVektor.create;
|
AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
Werde ich machen!
Funktioniert jetzt auch. Habe ewig gesucht und den Fehler immer wieder übersehen. Na ja. Danke für die aufmerksamen Augen und ein schönes Wochenende noch! |
AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
Die Zuweisung von 0 im Konstruktor ist nicht notwendig.
Jeder Konstruktor löscht automatisch den Speicher der neuen Instance mit Nullen. Damit sind alle numerischen Variablen = 0, Zeiger = nil, Interfaces und Strings ebenfalls nil bzw. Leer. |
AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
Das stimmt zwar, ist aber kein Fehler, genau wie z.B.
Delphi-Quellcode:
auch nicht falsch, aber unnötig ist (Free prüft ja intern selbst auf Assigned). Trotzdem kann man natürlich darauf hinweisen.
if Assigned(MyObj) then
MyObj.Free; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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