![]() |
"Str(X [: Width [: Decimals ]];..." - Parameter re
Hi,
Wie kann man in Delphi solche Parameter wie sie bei der Procedure Str möglich sind in Delphi realisieren ? Ich hätte das gern für meine eigene Function verwendet.
Delphi-Quellcode:
// String-Verarbeitung
// procedure Str(X [: Width [: Decimals ]]; var S); function Test(cont X [: Width [: Decimals ]]); // <-<< Fehler begin // Foo Result := ''; end; |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
ich hab das mal versucht meinst du etwa so ?
Delphi-Quellcode:
Procedure Test(x :Integer; Width :Integer = 3;const s:String =' ');
begin end; |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
Äh, nein. Das sind normale Proceduren und Functions -Parameter.
Was ich suche ist eine Möglichkeit wie bei der Str-Procedure aus der System.pas von Delphi, die ich nicht habe in der PE - Version, Formatierungsparameter oder wie die heissen mit anzugeben. Also:
Delphi-Quellcode:
// String-Verarbeitung
// procedure Str(X [: Width [: Decimals ]]; var S); function SingleToString(X: single): string; begin str(X:0:3, result); end; function SingleToString_2(X: single): string; begin str(X:10:2, result); end; var s: string; BEGIN s := SingleToString(10.123456); // Inhalt nun von s = '10.123' s := SingleToString_2(10.123456); // Inhalt nun von s =' 10.12'; END. ![]() ![]() Ich möchte mir eine eigene ( nonVCL ) str-Function basteln. Gruss... |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
Hallo,
[Halbwissen] so wie ich das sehe, geht das nicht. Das steckt ne Menge CompilerMagic dahinter. Guck mal in die System.pas(==> TurboDelphi hat ja die Sourcen drin). Da gibts nur _Str0Ext, _Str1Ext und _Str2Ext diese - im Übrigen vollständig in ASM implementierten Routinen - werden IMHO per CompilerMagic zur Str()-Function zusammengesetzt... [/Halbwissen] mfg Christian |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
Hallo Matti,
Christian hat es schon richtig beschrieben - es geht nicht. Du könntest zwar versuchen, die Funktionalität nachzuempfinden, die Syntax wäre jedoch in jedem Fall eine andere. Meiner Meinung nach steht der Aufwand für ein solches Unterfangen auch in keinem rechten Verhältnis zum Nutzen. Was spricht eigentlich gegen die Verwendung von Str? Die Prozedur war schon immer Bestandteil der RTL, nicht der VCL. An der System-Unit wirst du zudem kaum vorbeikommen, ohne sie vollständig neu zu implementieren. Gruß Hawkeye |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
Kurz und knapp, Sch... Schade! :cry:
Zitat:
Beispiel, die Verwendung von Floattypen und wvsPrintf(). |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
wie schon beschrieben, du könntest höchstens über vordefinierte Parameter und Überladen sowas nachempfiden.
Delphi-Quellcode:
Abgesehn davon gibt's ja eientlich noch solche Funkionen wie IntToStr, FloatToStr, Format und sowas, welche auch diese Funktionalität kapseln.
Function Str(X: Integer; Width: Integer = 0): String; Overload;
Begin System.Str(X:Width, Result); End; Function Str(X: Extended; Width: Integer = 0; Decimals: Integer = 0): String; Overload; Begin System.Str(X:Width:Decimals, Result); End; |
Re: "Str(X [: Width [: Decimals ]];..." - Paramete
Verfilx, das klappt ja. Heute früh wollte es nicht so... Liegt warscheinlich an meiner Erkältung. :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 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