Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wertezuweisung Record ohne Punktnotation (https://www.delphipraxis.net/121827-wertezuweisung-record-ohne-punktnotation.html)

asusbob 5. Okt 2008 14:06


Wertezuweisung Record ohne Punktnotation
 
Huhu,

ich hab wahrscheinlich ne recht simple frage:
ich hab nen record:
Delphi-Quellcode:
myrec = record
          x1,x2,x3,x4 : currency;
        end;
und ich möchte dem werte zuweisen ohne diese Punktnotation also sowas wie:
Delphi-Quellcode:
[...]
var x : myrec;
begin
x := (1.2,2.3,3.4,4.5);
[...]
gibbet da ne Möglichkeit, ich hab leider noch nix gefunden.

Viele Grüße =)

mirage228 5. Okt 2008 15:01

Re: Wertezuweisung Record ohne Punktnotation
 
Du könntest Dir eine Funktion / Prozedur dafür schreiben.

Delphi-Quellcode:
procedure FillRecord(var R: TMyRec; A1, A2, A3, A4: Currency);
begin
  with R do
  begin
    X1 := A1;
    X2 := A2;
    X3 := A3;
    X4 := A4;
  end;
end;
der Aufruf wäre dann:
Delphi-Quellcode:
var
  x: TMyRec;
begin
  FillRecord(x, 1.2, 2.3, 3.4, 4.5);
end;

asusbob 5. Okt 2008 16:07

Re: Wertezuweisung Record ohne Punktnotation
 
Jaaa, das wäre auch ne Alternative... aber eine vorgefertigte Methode gibts da nicht?

Danke schonmal :)

Apollonius 5. Okt 2008 16:10

Re: Wertezuweisung Record ohne Punktnotation
 
Falls du wirklich einen konstanten Record zuweisen willst, kannst du eine typisierte Konstante deklarieren und dann diese zuweisen. Das sähe dann so aus:
Delphi-Quellcode:
const MyRecordConst: TMyRecord = (a: 1; b: 5; c: 4.5);

Mr_G 5. Okt 2008 16:17

Re: Wertezuweisung Record ohne Punktnotation
 
Ich glaube ab Delphi 2006 gehen auch solche schmucken Sachen:
Delphi-Quellcode:
type TMyRec = record
  x1,x2,x3,x4 : Currency;
  constructor Create(v1, v2, v3, v4: Currency);
  //oder:
  procedure SetValue(v1, v2, v3, v4: Currency);
end;
...
procedure TMyRec.Create(v1, v2, v3, v4: Currency);
begin
  x1 := v1;
  x2 := v2;
  x3 := v3;
  x4 := v4;
end;

procedure TMyRec.SetValue(v1, v2, v3, v4: Currency);
begin
  x1 := v1;
  x2 := v2;
  x3 := v3;
  x4 := v4;
end;
...
Und benutzt wird es dann so:
Delphi-Quellcode:
var x: TMyRec;
begin
  x := TMyRec.Create(1.2, 2.3, 3.4, 4.5);
  x.SetValue(5.2, 6.3, 7.4, 8.5);
end;

Hawkeye219 5. Okt 2008 16:54

Re: Wertezuweisung Record ohne Punktnotation
 
Hallo,

Delphi-Quellcode:
FillRecord(x, 1.2, 2.3, 3.4, 4.5);
 
x := TMyRec.Create(1.2, 2.3, 3.4, 4.5);
x.SetValue(5.2, 6.3, 7.4, 8.5);
Wer kann mir in einem Jahr noch sagen, welcher Wert welchem Recordfeld zugewiesen wird?

Man sollte bei aller Liebe zu kompaktem Code die Lesbarkeit nicht aus den Augen verlieren.

Gruß Hawkeye

Mr_G 5. Okt 2008 18:39

Re: Wertezuweisung Record ohne Punktnotation
 
Zitat:

Zitat von Hawkeye219
Wer kann mir in einem Jahr noch sagen, welcher Wert welchem Recordfeld zugewiesen wird?

Man sollte bei aller Liebe zu kompaktem Code die Lesbarkeit nicht aus den Augen verlieren.

Lesbarkeit ist sehr wichtig, das stimmt schon, aber in dem Beispiel handelt es sich ja um einheitliche Zahlenwerte, die dazu noch als x1 bis x4 durchnummeriert sind. Eine logische Reihenfolge ist damit also gegeben (wie z.B. auch bei Rect etc.). Hat man jetzt sogar noch viele derartige Zuweisungen im Code macht es das ganze sogar wesentlich übersichtlicher.

P.S.: Das ganze unter der Vorraussetzung, dass man sich konsequent an einen Weg hält und nicht alles mischt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 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