AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt
Thema durchsuchen
Ansicht
Themen-Optionen

Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt

Ein Thema von ichkommenichtweiter · begonnen am 23. Jan 2016 · letzter Beitrag vom 25. Jan 2016
Antwort Antwort
ichkommenichtweiter

Registriert seit: 23. Jan 2016
2 Beiträge
 
#1

Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt

  Alt 23. Jan 2016, 16:17
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.

Geändert von MrSpock (25. Jan 2016 um 08:49 Uhr) Grund: Delphi Tags eingefügt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt

  Alt 23. Jan 2016, 16:33
Willkommen in der 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:
VektorA.create;
ein VektorA := TVektor.create;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
ichkommenichtweiter

Registriert seit: 23. Jan 2016
2 Beiträge
 
#3

AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt

  Alt 23. Jan 2016, 16:46
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!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt

  Alt 25. Jan 2016, 08:44
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Problem Lazarus - Übergabe Wert an Eigenschaft von Objekt

  Alt 25. Jan 2016, 08:48
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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