Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Format-Strings (https://www.delphipraxis.net/26147-format-strings.html)

ibp 19. Jul 2004 10:26


Format-Strings
 
Hallo,
montag morgen und schon die ersten probleme ;-)

Mein Problem: habe eine zahl 2..3 stellig und die sall asl string der form dargestellt werden:
für 124 : '\124' das ist ja kein wirkliches problem
aber...

für 28: '\028' hier ist die null das problem, ich möchte nicht noch eine zusätzliche abfrage machen, wenn es geht, also hab ich mich um format-strings bemüht...

Delphi-Quellcode:
result:=result+format('\%3d',[ZeichenNr]) // ersetzte Zeichen
aber es funzt nicht :wall: obwohl in der oh steht ...

Zitat:

d Dezimal. Das Argument muss ein Integerwert sein. Der Wert wird in einen String umgewandelt, der aus Dezimalzahlen besteht. Wenn der Format-String einen Bezeichner für die Genauigkeit enthält, muss der resultierende String mindestens die angegebene Anzahl von Stellen aufweisen. Enthält er weniger Stellen, wird der String auf der linken Seite mit Nullen aufgefüllt.
... warum?????

MathiasSimmack 19. Jul 2004 10:39

Re: Format-Strings
 
Du hast den Punkt vor der 3 vergessen.

oki 19. Jul 2004 10:40

Re: Format-Strings
 
Hi,

also bei mir steht in der Hilfe, dass die fehlenden Stellen mit Leerzeichen aufgefüllt werden. Das bei entsprechender Ausrichtungsangabe vor oder nach dem String.

Mit "0" ist da nichts!

Verwende sonst FormatFloat. Hier kannst du als FormatString '000' eintragen und es funzt wie gewollt.

Gruß oki

oki 19. Jul 2004 10:42

Re: Format-Strings
 
Oooops,

war langsammer als MathiasSimmack und er hat auch noch recht.

Gruß oki

ibp 19. Jul 2004 10:54

Re: Format-Strings
 
thx at all, so klappts auch mit den nullen :thuimb:

Delphi-Quellcode:
result:=result+format('\%.3d',[ZeichenNr])

Robert Marquardt 19. Jul 2004 15:40

Re: Format-Strings
 
Das ist vielleicht das groesste Problem von Format() das es die Format-Strings von C nicht voll uebernommen hat.
Ich hatte schon oefters den Wunsch das mal zu implementieren, aber wenn man den Standard (ja das ist inzwischen standardisiert) liest dann ueberlegt man es sich immer wieder.

ibp 19. Jul 2004 16:32

Re: Format-Strings
 
Zitat:

Zitat von Robert Marquardt
Das ist vielleicht das groesste Problem von Format() das es die Format-Strings von C nicht voll uebernommen hat.
Ich hatte schon oefters den Wunsch das mal zu implementieren, aber wenn man den Standard (ja das ist inzwischen standardisiert) liest dann ueberlegt man es sich immer wieder.

:wiejetzt:

Luckie 19. Jul 2004 16:41

Re: Format-Strings
 
Es ist nur eine unvollständige "Übersetzung" der String-Formatierungs-Möglichkeiten, wie sie aus C bei printf zum Beispiel möglich sind. das wollte Robert damit wohl sagen.

Robert Marquardt 19. Jul 2004 18:18

Re: Format-Strings
 
Genau. Delphi und C sind auch noch dezent inkompatibel bei den Format-Strings.
Vielleicht koennten wir mal ein Projekt dazu anleiern.

Robert_G 19. Jul 2004 18:57

Re: Format-Strings
 
Zitat:

Zitat von Robert Marquardt
Genau. Delphi und C sind auch noch dezent inkompatibel bei den Format-Strings.
Vielleicht koennten wir mal ein Projekt dazu anleiern.

Ist gar nicht nötig, unter .Net funktioniert es gleich, egal ob c# oder Delphi.Net (bis auf das nervige "System."):
Delphi-Quellcode:
System.String.Format('{0} - {1} ({2,2:00}:{3,2:00} min)'
                    ,['Filter', 'Welcome to the Fold', 7, 40]);
Code:
String[b][color=#ff0000].[/color][color=#3600aa]Format[/color][color=#ff0000]([/color][/b][color=#ad0000]"{0} - {1} ({2,2:00}:{3,2:00} min)"[/color]
             [b][color=#ff0000],[/color][/b][color=#3600aa]new[/color] [b]Object[color=#ff0000][] {[/color][/b][color=#ad0000]"Van Halen"[/color][b][color=#ff0000], [/color][/b][color=#ad0000]"Running with the devil"[/color][b][color=#ff0000], [/color][/b][color=#ad00bb]3[/color][b][color=#ff0000], [/color][/b] [color=#ad00bb]34[/color] [b][color=#ff0000]});[/color][/b]

ibp 19. Jul 2004 19:16

Re: Format-Strings
 
...dieser threat bekommt eine eigendynamic :wink:, lustig, mein problem hatte sich ^ schon gelöst :-D

Robert Marquardt 20. Jul 2004 09:50

Re: Format-Strings
 
Zitat:

Zitat von Robert_G
Ist gar nicht nötig, unter .Net funktioniert es gleich, egal ob c# oder Delphi.Net (bis auf das nervige "System."):

Das klingt ein bischen arrogant. Es gibt viele Leute die kein .net programmieren wollen, kein Delphi 8 kaufen koennen usw.

ibp 20. Jul 2004 10:00

Re: Format-Strings
 
...also bisher bin ich noch nicht an die grenzen von format() gekommen, was sind denn die großen unterschiede zu c? (da ich c nicht kenne)

Robert Marquardt 20. Jul 2004 12:52

Re: Format-Strings
 
Eine der nervigeren Sachen ist das Delphi "%03d" nicht kennt.
Die Null bedeutet das nicht mit Leerzeichen sondern mit Vornullen expandiert wird.
Zumindest die Delphi-Hilfe sagt nichts ueber "%X" aus was in C bedeutet das 'A'..'F' genommen wird waehrend "%x" 'a'..'f' benutzt.

Robert_G 20. Jul 2004 13:01

Re: Format-Strings
 
Zitat:

Zitat von Robert Marquardt
Zitat:

Zitat von Robert_G
Ist gar nicht nötig, unter .Net funktioniert es gleich, egal ob c# oder Delphi.Net (bis auf das nervige "System."):

Das klingt ein bischen arrogant. Es gibt viele Leute die kein .net programmieren wollen, kein Delphi 8 kaufen koennen usw.

So war es nicht gemeint ;)
Irgendwann in näherer Zukunft wird sich wohl jeder damit beschäftigen ( müssen ).
Zitat:

...kein Delphi 8 kaufen koennen...
Dazu könnte ich auch niemand ruhigem Gewissens raten. Aber für den Hobby-entwickler ist die kostenlose Kombi #develop + .Net SDK unschlagbar.

Robert Marquardt 20. Jul 2004 13:10

Re: Format-Strings
 
Und wo bleiben dann die bisherigen Delphi-Entwickler?
Es nuetzt ja nichts wenn .net alles bietet, aber das eigene Delphi-Projekt durchhaengt
weil man am Format() verzweifelt.

ibp 20. Jul 2004 13:41

Re: Format-Strings
 
Zitat:

Zitat von Robert Marquardt
Eine der nervigeren Sachen ist das Delphi "%03d" nicht kennt.
Die Null bedeutet das nicht mit Leerzeichen sondern mit Vornullen expandiert wird.

... wieso, macht delphi doch, zwar nicht mit der deklaration aber mit "%.3d" siehe ^^

Zitat:

Zitat von Robert Marquardt
Zumindest die Delphi-Hilfe sagt nichts ueber "%X" aus was in C bedeutet das 'A'..'F' genommen wird waehrend "%x" 'a'..'f' benutzt.

.. keine ahnung müsste man mal probieren...

Robert Marquardt 20. Jul 2004 15:28

Re: Format-Strings
 
Meine urspruengliche Beschwerde war das Format strings nicht voellig mit C kompatibel sind. "%03d" ist eben so ein Fall.
"%X" geht mit Format, aber die Dokumentation laesst sehr zu wuenschen uebrig.

MathiasSimmack 20. Jul 2004 15:32

Re: Format-Strings
 
Zitat:

Zitat von Robert Marquardt
Zumindest die Delphi-Hilfe sagt nichts ueber "%X" aus was in C bedeutet das 'A'..'F' genommen wird waehrend "%x" 'a'..'f' benutzt.

Da es aber funktioniert (eben mit Delphi 5 getestet) ist es weniger ein Problem von Delphi, sondern eher ein Problem der Hilfe. Aber ich schätze mal, da sitzen zwei verschiedene Teams dran.

Ich kann mich aber noch an Luckies DLL-Export erinnern. Er hat dort im Original als Format "%p" benutzt, um eine Zeigeradresse anzuzeigen. Allerdings war das OS-abhängig (s. PSDK), aber ein
Delphi-Quellcode:
Format('%.8X', [Integer(DLLInfo.FuncAddresses[i])]);
tat´s dann auch. ;)

ibp 20. Jul 2004 16:45

Re: Format-Strings
 
Zitat:

Zitat von Robert Marquardt
...aber die Dokumentation laesst sehr zu wuenschen uebrig.

...ja das stimmts :wink:

oki 21. Jul 2004 09:05

Re: Format-Strings
 
Hi,

also mir ist es wurscht, ob C und Delphi bei Format kompatibel sind. Ich programmiere halt in Delphi und gewöhne mir damit den Delphi-Syntax an. Es sind halt auch zwei unterschiedliche Sprachen. Ich denke wenn ich mehr in C machen wollte müßte ich mir an anderer Stelle mehr den Kopf zerbrechen als über den Syntax von Format.

Was auch mich nervt ist die OH. Da steht wirklich nicht viel sinnvolles drin. Dann muß ich hier auch feststellen dass sie zu tiefst unvollständig ist.

Kann jemand sagen wo mann zum Delphi "Format" eine ordentliche Beschreibung erhält?

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 13: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