Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt (https://www.delphipraxis.net/188009-problem-lazarus-uebergabe-wert-eigenschaft-von-objekt.html)

ichkommenichtweiter 23. Jan 2016 16:17

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:
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.
Danke schon einmal für eure Hilfe.

DeddyH 23. Jan 2016 16:33

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.create;

ein
Delphi-Quellcode:
VektorA := TVektor.create;

ichkommenichtweiter 23. Jan 2016 16:46

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!

Blup 25. Jan 2016 08:44

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.

DeddyH 25. Jan 2016 08:48

AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
 
Das stimmt zwar, ist aber kein Fehler, genau wie z.B.
Delphi-Quellcode:
if Assigned(MyObj) then
  MyObj.Free;
auch nicht falsch, aber unnötig ist (Free prüft ja intern selbst auf Assigned). Trotzdem kann man natürlich darauf hinweisen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.

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