AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi "Str(X [: Width [: Decimals ]];..." - Parameter realisieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Str(X [: Width [: Decimals ]];..." - Parameter realisieren

Ein Thema von turboPASCAL · begonnen am 23. Feb 2008 · letzter Beitrag vom 23. Feb 2008
Antwort Antwort
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

"Str(X [: Width [: Decimals ]];..." - Parameter re

  Alt 23. Feb 2008, 06:40
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;
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#2

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 06:46
ich hab das mal versucht meinst du etwa so ?
Delphi-Quellcode:
Procedure Test(x :Integer; Width :Integer = 3;const s:String =' ');
begin
end;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#3

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 07:05
Ä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.
Delphi-Referenz durchsuchenFormat, Delphi-Referenz durchsuchenFloatToStr etc. stehen mir in meinem Programm nicht zur Verfügung.


Ich möchte mir eine eigene ( nonVCL ) str-Function basteln.

Gruss...
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#4

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 10:48
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
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 11:31
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
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#6

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 11:42
Kurz und knapp, Sch... Schade!
Zitat von Hawkeye219:
Was spricht eigentlich gegen die Verwendung von Str?
Das es eine Procedure und keine Function mit dem Result als String ist.
Beispiel, die Verwendung von Floattypen und wvsPrintf().
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#7

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 15:32
wie schon beschrieben, du könntest höchstens über vordefinierte Parameter und Überladen sowas nachempfiden.

Delphi-Quellcode:
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;
Abgesehn davon gibt's ja eientlich noch solche Funkionen wie IntToStr, FloatToStr, Format und sowas, welche auch diese Funktionalität kapseln.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#8

Re: "Str(X [: Width [: Decimals ]];..." - Paramete

  Alt 23. Feb 2008, 19:33
Verfilx, das klappt ja. Heute früh wollte es nicht so... Liegt warscheinlich an meiner Erkältung.
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 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