Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String vorne mit Nullen auffüllen (https://www.delphipraxis.net/59914-string-vorne-mit-nullen-auffuellen.html)

3_of_8 30. Dez 2005 15:01


String vorne mit Nullen auffüllen
 
Hallo! Ich habe einen String mit einer Länge<=8, und will diesen jetzt bis zur Länge 8 vorne mit Nullen auffüllen.

Es gibt sone Routine Format oder FormatStr glaub ich, aber ich bin eine absolute Niete in regulären Audrücken. Wie mache ich das?

jbg 30. Dez 2005 15:02

Re: String vorne mit Nullen auffüllen
 
Das hat nichts mit regulären Ausdrücken zu tun.

Delphi-Quellcode:
S := IntToStr(MyIntValue);
S := StringOf('0', 8 - Length(S)) + S;

Muetze1 30. Dez 2005 15:12

Re: String vorne mit Nullen auffüllen
 
Zitat:

Zitat von 3_of_8
Hallo! Ich habe einen String mit einer Länge<=8, und will diesen jetzt bis zur Länge 8 vorne mit Nullen auffüllen.

Wo kommt der String her? Wenn es z.B. ein Integer ist, dann mach es doch einfach so:
Delphi-Quellcode:
 deinstring := Format('%.08d', [deininteger]);

3_of_8 30. Dez 2005 15:19

Re: String vorne mit Nullen auffüllen
 
Format hat was mit regulären Ausdrücken zu tun. Danke @all.

Muetze1 30. Dez 2005 15:23

Re: String vorne mit Nullen auffüllen
 
Nachtrag zu jbg's Beitrag: Die Funktion heisst StringOfChar()

Delphi-Quellcode:
S := IntToStr(MyIntValue);
S := StringOfChar('0', 8 - Length(S)) + S;

jbg 30. Dez 2005 15:32

Re: String vorne mit Nullen auffüllen
 
Zitat:

Format hat was mit regulären Ausdrücken zu tun.
Mein Satz bezog sich nicht auf Format() sondern auf deine Aussage: "aber ich bin eine absolute Niete in regulären Audrücken.". Somit ist die Lösung mit StringOfChar eine, die ohne reguläre Ausdrücke auskommt. Vielleicht hätte ich besser einen Doppelpunkt statt eines Punktes schreiben sollen.


Zitat:

Zitat von Muetze1
Nachtrag zu jbg's Beitrag: Die Funktion heisst StringOfChar()

Ach menno. Ich wollte doch das er das fehlende "Char" selbst findet. :roll:

3_of_8 30. Dez 2005 15:35

Re: String vorne mit Nullen auffüllen
 
Ich hab eh grade gemerkt, dass IntToHex den Parameter "Digits" unterstützt.

Muetze1 30. Dez 2005 15:42

Re: String vorne mit Nullen auffüllen
 
Zitat:

Zitat von 3_of_8
Ich hab eh grade gemerkt, dass IntToHex den Parameter "Digits" unterstützt.

Und gleich auch nochmal das ganze mit Format() zur Info/Kenntnisnahme hinterher:

Delphi-Quellcode:
hexstring := Format('%.08X', [deininteger]); // grosse Buchstaben A-F in der Hexzahl
hexstring := Format('%.08x', [deininteger]); // kleine Buchstaben a-f in der Hexzahl

alzaimar 30. Dez 2005 16:15

Re: String vorne mit Nullen auffüllen
 
Zitat:

Zitat von 3_of_8
Format hat was mit regulären Ausdrücken zu tun. Danke @all.

Was denn?
Ums kurz zu machen: Die Formatierungsausdrücke für die Funktion Format/FormatStr sind *keine* regulären Ausdrücke.

3_of_8 30. Dez 2005 16:28

Re: String vorne mit Nullen auffüllen
 
Nicht? Sieht aber genau so aus.

dahead 30. Dez 2005 16:42

Re: String vorne mit Nullen auffüllen
 
Zitat:

Zitat von 3_of_8
Nicht? Sieht aber genau so aus.

Das könnte man eher Maske oder Platzhalter nennen.

alzaimar 31. Dez 2005 10:01

Re: String vorne mit Nullen auffüllen
 
Zitat:

Zitat von 3_of_8
Nicht? Sieht aber genau so aus.

Na, neee. Oder doch. Sind halt auch Sonderzeichen drin. Formatierungsanweisungen steuern den Inhalt eines Strings, während Masken und Reguläre Ausdrücke einen endlichen Automaten repräsentieren, der zum Parsen eines einfachen Ausdruckes verwandt wird (Typ-3 Grammatik). Masken aind einfacher gestrickt, man kann damit nicht alle Typ-3 Grammatiken abbilden.

Einfach ausgedrückt: Masken und Reguläre Ausdrücke definieren, wie ein String aufgebaut sein muss (3 Buchstaben, Bindestrich, Mindestens 1 Ziffer und zum Schluss A,B oder C).


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