![]() |
Einer Funktion einen beliebigen Typ überliefern
Ich mein so was:
Delphi-Quellcode:
nur das v eben KEIN Integer sein soll, sondern ein beliebiger Typ. Ich hab das Forum durchsucht, aber nix gefunden.
function f(v:integer):integer;
begin [...] end; Bei Blockread/write wird ja genau das gemacht, also muss es doch möglich sein :?: :gruebel: |
Re: Einer Funktion einen beliebigen Typ überliefern
![]() |
Re: Einer Funktion einen beliebigen Typ überliefern
Variant is doch auch bloß ein typ unter vielen? dazu noch eine Ausnahme...
Zitat:
|
Re: Einer Funktion einen beliebigen Typ überliefern
und wie lautet der Fehler? könnte dieser vielleicht am letzten parameter liegen (der in eckigen klammern) Denn normaler Weise geht es einfach keinen Typ anzugeben (siehe TStream.Write bzw. TStream.Read). Bei Typenlosen parametern musst du nur aufpassen das es als "var" deklariert ist damit es funktioniert ansonsten geht es nicht. Denn durch den Var wird letztendlich nur die Adresse übergeben (Referenz) was einem Pointer entspricht.
Also
Delphi-Quellcode:
entspricht
procedure ZeigeMsg(var AMsg; ALen: Integer);
Delphi-Quellcode:
Und daher kann auch jeder Typ übergeben werden.
procedure ZeigeMsg(AMsg: Pointer; ALen: Integer);
|
Re: Einer Funktion einen beliebigen Typ überliefern
Das mit dem untypisierten Parameter geht schon, aber die eckigen Klammern dürfen nicht in einem Funktionskopf stehen. ;)
Sie dienen nur in der OH der Kennzeichnung eines optionalen Parameters. Diese werden durch Standardwerte definiert. |
Re: Einer Funktion einen beliebigen Typ überliefern
ne, ich will es ja gar nicht so compilieren wie es in der OH steht sondern so:
Delphi-Quellcode:
zu den eckigen klammern: wie mach ich das dann?
function blockwrite(buf; bytecount:integer):integer;
wenn ich z.B.
Delphi-Quellcode:
eingebe, kommt ja ne Liste von hunderttausend Befehlen, die alle in der Unit sind, und das geht mit selbstgemachten Units auch. Und da werden die eckigen klammern angegeben...
windows.
Zitat:
|
Re: Einer Funktion einen beliebigen Typ überliefern
das liegt wie bereits geschrieben daran das bei "var" und "const" nur die Speicheradressen übergeben werden was eben gleich zu setzen ist als ob der Typ ein Pointer wäre.
|
Re: Einer Funktion einen beliebigen Typ überliefern
aha, wieder was gelernt :coder2:
aaaaber, wie kann ich jetzt optionale Parameter angeben? |
Re: Einer Funktion einen beliebigen Typ überliefern
optionale parameter gibt man so an
Delphi-Quellcode:
procedure Beispielprocedure(OptionalerParameter: Integer=StandardWert);
|
Re: Einer Funktion einen beliebigen Typ überliefern
Am einfachsten mit
Delphi-Quellcode:
:mrgreen:
procedure DeleteUser (const User: String = 'ichbins');
DeleteUser(); //ist das gleiche wie DeleteUser ('ichbins'); Man muss optionale aber nach Pflichtparametern angeben <== Das war bei SirT nicht :mrgreen: Edits: Scheiß Tastatur ich habe ... :evil: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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-2025 by Thomas Breitkreuz