Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String formatieren ? (https://www.delphipraxis.net/136368-string-formatieren.html)

madina 29. Jun 2009 11:59


String formatieren ?
 
Hallo,

wie kann ich ein Zahl mit dem Commando Format('%', iZahl); so formatieren, daß statt Nullen auf der linken Seite leere Zeichen ausgegeben wird ?

z.B:

iZahl:= 1;
statt 001
1

od.

statt 01
1

usw

mfg
ati

Lannes 29. Jun 2009 12:08

Re: String formatieren ?
 
Hallo,

so:
Delphi-Quellcode:
s := Format('%3d',[1]);

Popov 29. Jun 2009 12:09

Re: String formatieren ?
 
Delphi-Quellcode:
Format('%80d', [1])

fui-tak 29. Jun 2009 18:22

Re: String formatieren ?
 
Wenn man die Nullen weg haben will, würde es auch so gehen, sieht nur nicht so wahnsinnig professionell aus: :wink:
Delphi-Quellcode:
StrToInt(IntToStr(005))

DeddyH 29. Jun 2009 18:25

Re: String formatieren ?
 
Es ging ja darum, statt der Nullen Leerzeichen zu haben ;)

fui-tak 29. Jun 2009 18:35

Re: String formatieren ?
 
mmmmmm...hast recht^^

himitsu 29. Jun 2009 18:57

Re: String formatieren ?
 
also quasi so
Delphi-Quellcode:
iZahl:= 1;
so ' 1' statt '001'

od.

so ' 1' statt 01
so dürfte das Problem dann wohl verständlicher rüberkommen :angel:

madina 30. Jun 2009 10:54

Re: String formatieren ?
 
Hallo,

mit den ersten 2 Lösungen klappt es nicht.

mfg

DeddyH 30. Jun 2009 10:56

Re: String formatieren ?
 
Sicher? Bei mir klappt das sehr wohl.

jaenicke 30. Jun 2009 11:04

Re: String formatieren ?
 
Wo gibst du das denn aus? Also wie hast du das getestet? (Bei mir gehts auch.)
Wenn du das in ein Memo schreibst z.B., dann musst du auch Courier New oder eine andere monospacige Schriftart einstellen, damit die Zeichen immer exakt gleich breit sind. (Sonst kann der entstehende Platz kleiner sein.)

Popov 30. Jun 2009 11:17

Re: String formatieren ?
 
Zitat:

Zitat von madina
mit den ersten 2 Lösungen klappt es nicht.

Nur mal so: das funktioniert natürlich nicht:

Delphi-Quellcode:
s := Trim(Format('%3d',[1]));
Aber bevor wir lange diskutieren, teste das mal:

Delphi-Quellcode:
ShowMessage(':' + Format('%200d', [1]));
Und sag uns ob zwischen dem Doppelpunkt und 1 eine Lücke ist.

Und noch was. Ich hoffe nicht, daß du ein Html-Code generierst. Da werden Leerzeichen > 1 ignoriert.

madina 1. Jul 2009 11:25

Re: String formatieren ?
 
Hallo,

es funktioniert nur statisch, mit einer Variable iZahl, der insgesamt 3 Stellen besitzen soll und jenachdem ' 1' oder ' 11' oder '999' ausgeben soll klapt es nicht.

mfg

Lannes 1. Jul 2009 11:33

Re: String formatieren ?
 
Hallo,

ehrlich gesagt versteh ich nicht was Du meinst.
Was klappt nicht?
- Fehlermeldung
- wird nichts ausgegeben
- etc.

Poste doch mal den Code(incl. Deklaration ,Initialisierung, Ausgabe etc. der Variable) den Du benutzt.

Popov 1. Jul 2009 17:39

Re: String formatieren ?
 
Zitat:

Zitat von madina
Hallo,

es funktioniert nur statisch, mit einer Variable iZahl, der insgesamt 3 Stellen besitzen soll und jenachdem ' 1' oder ' 11' oder '999' ausgeben soll klapt es nicht.

mfg

madina, dir ist aber klar, daß es Schriften gibt die feste Zeichen-Breiten haben, wie zB. Courier New, und Schriften die variable Zeichen-Breiten haben, wie zB. Arial oder MS Sans Serif (Standardschrift). Bei Courier New ist ein Leerzeichen genauso breit wie die Zahl 1. Bei Arial ist das Leerzeichen viel schmäler als die Zahl 1. Wenn du also 1 (vor der 1 sind drei Leerzeichen) und 999 untereinander setzt, dann ist die 1, obwohl zwei Zeichen davor, viel weiter vorne als die letzte 9 von 999.

Deshalb bat ich dir auch das auszuführen:
Delphi-Quellcode:
ShowMessage(':' + Format('%200d', [1]));
Wenn du willst, daß die Leerzeichen die gleiche breiten haben wie Zahlen, dann nim Courier New als Schrift.


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