![]() |
Parameterübergabe durch Pointer einfacher gestalten
Hi,
also ich habe einen Typ
Delphi-Quellcode:
Und habe mir eine klitze kleine Funktion geschrieben
TTimeSpecification=record
BG,LG:real; day,month:byte; year:integer; time:real; end;
Delphi-Quellcode:
Ich habe meistens ein Feld einer anderen Klasse (TS in einer Klasse US) die ich nicht verändern möchte. Allerdings möchte zum Beispiel deiner Funktion diese Globale Varable bzw. Feld mit nur einer veränderten variable im record übergeben.
function TimeSpecification(BG,LG,time:real; day,month:byte; year:integer):TTimeSpecification;
begin result.BG:=BG; result.LG:=LG; result.time:=time; result.day:=day; result.month:=month; result.year:=year; end; Also so was:
Delphi-Quellcode:
Und ich habe mir gedacht vielleicht gibt es da einen kürzeren Weg über die Pointer.
energy:=CalcDayEnergy(TimeSpecification(us.ts.BG,us.ts.LG,i,us.ts.day,us.ts.month,us.ts.year));
Also ich bräuchte so was:
Delphi-Quellcode:
Aufruf:
function TimeSpecification(TS:TTimeSpecification; point:Pointer; value:variant):TTimeSpecification;
begin Real(point^):=value; // hier müsste ich anstadt Real noch irgendwie durch eine If bedingung ersetzten, die erkennt auf was der pointer zeigt und dann entsprechend dereferenziert result:=ts; end;
Delphi-Quellcode:
Kompilieren tut er das, doch natürlich funktionieren es nicht. Das habe nicht erwartet, weil ich mich nicht so gut mit Pointern auskenne, und es auch mehr ein Beispiel ist um zu erklären was ich brauche.
rs:=TimeSpecification(us.TS,@us.ts.year,2000); //das problem ist hierbei das ich einen pointer auf die globale Variable zeigt und nicht auf die result variable
Wisst ihr wie das geht? PS: wenn es nicht möglichsein sollte, dann mache ich es einfach wie oben beschrieben, auf dem langen Weg. |
Re: Parameterübergabe durch Pointer einfacher gestalten
ganze einfach:
Delphi-Quellcode:
[edit]ups, dachte es geht um den Aufruf[/edit]
with us.ts do
begin energy:=CalcDayEnergy(TimeSpecification(BG, LG, i, day, month, year)); end; |
Re: Parameterübergabe durch Pointer einfacher gestalten
Delphi-Quellcode:
:gruebel:
timeSpec := us.ts;
timeSpec.Time := i; energy := CalcDayEnergy(timeSpec); |
Re: Parameterübergabe durch Pointer einfacher gestalten
jaa.. dir möglichkeiten sind mir klar. Aber leider nicht ganz so kurz. Eine Zeile wäre mir lieber.
Obwohl SirThornberrys extrem einfache Möglichkeit, wahrscheinlich auch die beste ist. Noch ein bisschen kürzer:
Delphi-Quellcode:
@Khabarakh: Die Möglichkeit ist mir nun wirklich zu lang und zu umständlich.
with us.ts do
energy:=CalcDayEnergy(TimeSpecification(BG, LG, i, day, month, year)); PS:Zitat von Spock (Star Trek 4) Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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