Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Format Strings mit festen String längen (https://www.delphipraxis.net/164849-format-strings-mit-festen-string-laengen.html)

Freiwilderer 2. Dez 2011 11:33


Format Strings mit festen String längen
 
Moin,

ich versuche gerade mithilfe einer alten DOS Formatvorlagen Datei mir FormatStrings zu basteln.
Die alte Datei sieht so aus:

001\ \ Nr.: ########
002\ \ Telefon: \ \
003Fahrer Tournummer : ##### Datum: \ \

Leere Stellen zwischen zwei \ sind Platzhalter für Strings und # sind Platzhalter für Zahlen.

das sieht dann so aus
%-21s Rollkarten-Nr.: %8d
%-42s Telefon: %-16s
Fahrer Tournummer : %5d Datum: %-8s

in der Delphi Hilfe steht zum Thema Formatstrings mit %s folgendes
s String. Das Argument muss ein Zeichen, ein String oder ein PChar-Wert sein. Der String bzw. das Zeichen wird anstelle des Formatbezeichners eingefügt. Wenn im Format-String ein Genauigkeitsbezeichner angegeben ist, bestimmt er die maximale Länge des resultierenden Strings. Ist das Argument ein String, der diese Maximallänge überschreitet, wird der String abgeschnitten.

Leider wird der Text aber nicht abgeschnitten... das führt zu ziemlichen Problemen.
Hat jemand ne Idee, warum das so ist, oder, wie ich en Formatstring ändern kann, dass zu lange Texte abgeschnitten werden?

lg

Bummi 2. Dez 2011 12:06

AW: Format Strings mit festen String längen
 
Delphi-Quellcode:
  Showmessage(Format('%.8s',['Ein langer String']) )

Freiwilderer 2. Dez 2011 12:24

AW: Format Strings mit festen String längen
 
hey, danke.

mit so ner schnellen und direkten antwort hatte ich gar nich gerechnet :)

seltsam ist jetzt nur, dass er mir die aber auch nicht mit leerzeichen auffüllt.
also im grunde, wenn ich 22 zeichen sage, dann will ich auch genau 22 zeichen haben ;)

is alles etwas vertrackt, weil die ausdrucke später eingescannt und automatisch verarbeitet werden ......

Bummi 2. Dez 2011 13:17

AW: Format Strings mit festen String längen
 
Delphi-Quellcode:
Showmessage('"' + Format('%-8.8s',['Ein']) + '"')
Showmessage('"' + Format('%8.8s',['Ein']) + '"')

Freiwilderer 2. Dez 2011 13:22

AW: Format Strings mit festen String längen
 
danke,
perfekt!

Freiwilderer 5. Dez 2011 08:27

AW: Format Strings mit festen String längen
 
oh man, ähnliches problem mit float ...

Format %2.1f ist immer linksbündig, %-2.1f aber auch, wie bekomme ich das Rechtsbündig?

DeddyH 5. Dez 2011 08:40

AW: Format Strings mit festen String längen
 
Zur Not 2 mal formatieren.
Delphi-Quellcode:
var
  Zahl: double;
begin
  Zahl := Pi;
  ShowMessage('"' + Format('%8.8s', [Format('%2.1f', [Zahl])]) + '"');
end;

Sir Rufo 5. Dez 2011 08:46

AW: Format Strings mit festen String längen
 
Zitat:

Formatbezeichner werden in der folgenden Form angegeben:
Code:
"%" [Index ":"] ["-"] [Breite] ["." Genauigkeit] Typ

Wenn wir uns jetzt mal deine Werte für Breite und Genauigkeit ansehen
Delphi-Quellcode:
Format('%2.1f', [Zahl])
dann frage ich mich natürlich, wie man die Anzeige von
Delphi-Quellcode:
1.3
bewerkstelligen kann, wenn das nur 2 Zeichen breit sein darf. ;)

Freiwilderer 5. Dez 2011 08:54

AW: Format Strings mit festen String längen
 
@DeddyH
Das Problem ist, dass ich pro Zeile nur einmal "Format" habe und dann u.U. 3-5 verschiedene Platzhalter, weshalb ich keine zwei Formatiereungen machen kann.

@Sir Rufo ... ich ware igentlich davon ausgegangen, dass das jeweils die anzahl der vor und nachkommastellen angibt
also ich will im Grunde Werte zwischen 0 und 99.9 so ausgegen:
1.3
7.1
39.4
45.0
99.8

DeddyH 5. Dez 2011 08:58

AW: Format Strings mit festen String längen
 
Du willst doch im Grunde eine String-Formatierung haben, oder? Dann schreib Dir doch eine Funktion, die Dir das Gewünschte liefert und übergib der die vorformatierten Strings.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Seite 1 von 2  1 2      

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