![]() |
Verschiedene Arrays als Parameter unterscheiden
Mahlzeit miteinander.
Folgender Code vorweg:
Delphi-Quellcode:
Diese Array-Typen hab ich, und möchte sie als Übergabeparameter an eine Prozedur haben. So weit kein Problem:
type
TFFTData512 = array[0..512] of Double; TFFTData1024 = array[0..1024] of Double; TFFTData2048 = array[0..2048] of Double; TFFTData4096 = array[0..4096] of Double; TWaveData512 = array[0..512] of SmallInt; TWaveData1024 = array[0..1024] of SmallInt; TWaveData2048 = array[0..2048] of SmallInt; TWaveData4096 = array[0..4096] of SmallInt;
Delphi-Quellcode:
Aaaaber: Ich möchte jetzt innerhalb der Prozedur wissen, mit welchem der o.g. Typen ich es nun zu tun habe! Der is-Operator klappt nicht, da es sich ja nicht um Objekte handelt, und auch "TypeOf()" verweigert aus selbigem Grunde den Dienst.
procedure getData(out data);
Wüsste da jemand wie ich an diese Infos heran komme? Danke schomma! Fabian |
Re: Verschiedene Arrays als Parameter unterscheiden
Moin,
intern brauchst du zwei Prozeduren, nach aussen sieht es dann aber so aus, als ob du nur eine Prozedur hast...
Delphi-Quellcode:
und der Aufruf...
type
TFFTData512 = array[0..512] of Double; TFFTData1024 = array[0..1024] of Double; TFFTData2048 = array[0..2048] of Double; TFFTData4096 = array[0..4096] of Double; TWaveData512 = array[0..512] of SmallInt; TWaveData1024 = array[0..1024] of SmallInt; TWaveData2048 = array[0..2048] of SmallInt; TWaveData4096 = array[0..4096] of SmallInt; : : private procedure getData(data:array of double); overload; procedure getData(data:array of SmallInt); overload; public : : procedure TForm.getData(data:array of double); begin case sizeof(data) of sizeof(TFFTData512): showmessage('TFFTData512'); sizeof(TFFTData1024): showmessage('TFFTData1024'); sizeof(TFFTData2048): showmessage('TFFTData2048'); sizeof(TFFTData4096): showmessage('TFFTData4096'); end; end; procedure TForm.getData(data: array of SmallInt); begin case sizeof(data) of sizeof(TWaveData512): showmessage('TWaveData512'); sizeof(TWaveData1024): showmessage('TWaveData1024'); sizeof(TWaveData2048): showmessage('TWaveData2048'); sizeof(TWaveData4096): showmessage('TWaveData4096'); end; end;
Delphi-Quellcode:
vielleicht hilft es dir ja...
procedure TForm.ButtonClick(Sender: TObject);
var a1:TFFTData512; b1:TFFTData1024; c1:TFFTData2048; d1:TFFTData4096; a2:TWaveData512; b2:TWaveData1024; c2:TWaveData2048; d2:TWaveData4096; begin getData(a1); getData(b1); getData(c1); getData(d1); getData(a2); getData(b2); getData(c2); getData(d2); end; MfG Thorsten |
Re: Verschiedene Arrays als Parameter unterscheiden
Bist'n Schatz! :love:
Da hätt' man drauf kommen können... Dankee! |
Re: Verschiedene Arrays als Parameter unterscheiden
Moin!
Ich bezweifle das SizeOf(Data) funktioniert, da er dort IMHO nur eine 4 zurück liefern sollte bei allen 4 Typen. Daher könnte man es dort doch einfach mit High() oder Length() unterscheiden anhand der unterschiedlichen Array Längen (wie in dem Beispiel auch). MfG Muetze1 |
Re: Verschiedene Arrays als Parameter unterscheiden
Japp, mit High() ists richtig. Hatte ich auch so bei mir eingebaut. SizeOf() liefert natürlich immer nur 4, da es ja nur'n Pointer ist.
Aber gut dass du das nochmal ansprichst, falls jemand für selbiges Problem eine Lösung sucht! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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