![]() |
Record an Funktion weitergeben
Hallo,
wollte ein Programm zur Umrechnung von Geschwindigkeiten (z.Bsp: 36km/h = 10m/s) und um ein paar Daten zusammenzufassen habe ich einen Record benutzt. Nun zeigt mit Delphi einen Fehler an. :gruebel:
Delphi-Quellcode:
Hier wird InputRoute definiert
TSpeed = record
Edit : TEdit; (*das Edit-Feld in dem der Wert steht (zb. 36)*) Value : Double; (*der Wert im Edit-Feld in double*) Combobox : TCombobox; (*Eine Combobox in der sich die Einheit befindet (zb.: 'km')*) ValueofCBItems : array of Integer; (*Hier das zweite Item der Combox z.Bsp. hat den Wert 1000, da man 36 muss mit 1000 multipl. um auf Meter zu kommen*) end;
Delphi-Quellcode:
Und hier die Funktion.
InputRoute.Edit := Form1.ed_RouteInput;
InputRoute.Combobox := Form1.cb_RouteUnitInput; Setlength(InputRoute.ValueofCBItems, 2); InputRoute.ValueofCBItems[0] := 1; InputRoute.ValueofCBItems[1] := 1000; InputRoute := Convert(InputRoute); InputRoute := CalculateValue(InputRoute);
Delphi-Quellcode:
Hoffe ihr könnt mir helfen, danke im Voraus.
function CalculateValue(Speed : TSpeed) : TSpeed;
begin if Speed.Combobox.Items[Speed.Combobox.ItemIndex] = Speed.Combobox.Text then //hier wird der Fehler gemeldet Speed.Value := Speed.Value * Speed.ValueofCBItems[Speed.Combobox.ItemIndex] else Speed.Combobox.ItemIndex := 0; result := Speed; end; |
Re: Record an Funktion weitergeben
Zitat:
|
Re: Record an Funktion weitergeben
Eine Exeption der Klasse EAccessViolation, Zugriffsverletzung bei Addresse 0045E44C.
|
Re: Record an Funktion weitergeben
Delphi-Quellcode:
Hast Du die Edit und Combobox erstellt (instantiiert)?
TSpeed = record
Edit : TEdit; (*das Edit-Feld in dem der Wert steht (zb. 36)*) Value : Double; (*der Wert im Edit-Feld in double*) Combobox : TCombobox; (*Eine Combobox in der sich die Einheit befindet (zb.: 'km')*) ValueofCBItems : array of Integer; (*Hier das zweite Item der Combox z.Bsp. hat den Wert 1000, da man 36 muss mit 1000 multipl. um auf Meter zu kommen*) end; Wäre es nicht besser aus Edit einen String oder Integer zu machen und aus Combobox ebenso? Grüße Klaus |
Re: Record an Funktion weitergeben
Combobox.ItemIndex hat nicht zufällig den Wert -1 (nichts markiert)?
|
Re: Record an Funktion weitergeben
Sry, hab den Fehler gefunden, habe an der falschen Stelle gesucht, in der funktion Convert wurde der Record nicht ganz zurückgegeben. Also hatte Combobox den Wert nil und alle anderen auch! Danke dass ihr mich auf diesen Fehler aufmerksam gemacht habt.
|
Re: Record an Funktion weitergeben
Hi Jeff93
Records mit Objekten finde ich etwas seltsam. Ich denke das kann man in jedem Fall anders und vorallem eleganter lösen. Wie Klaus01 schon sagte: Zitat:
|
Re: Record an Funktion weitergeben
Nein in meiner Funktion muss ich auch auf noch andere Eigenschaften der Combobox zugreifen, im Edit ebenfalls.
Delphi-Quellcode:
PS: Sry für die späte Antwort^^
Try
zahl := StrToFloat(Edit1.Text); Except Edit1.Text := '1'; zahl := 1; End; |
Re: Record an Funktion weitergeben
// EDIT: Sorry meine Vorredner hatten das ja auch schon erwähnt
mmh, weiß zwar nicht warum die die Editfeld / Combobox Objekte übergibst und nicht die Werte, aber kenne deinen genauen Anwendungsfall ja auch nicht. Aber generell würde ich nicht ein TEdit übergeben, wenn ich vielleicht nur den Wert (also die Caption) brauche. Viele Grüße DM |
Re: Record an Funktion weitergeben
Sowas schreit übrigens geradezu nach objektorientierter Programmierung... :warn:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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 by Thomas Breitkreuz