Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Numerierung (000+Nummer) (https://www.delphipraxis.net/3856-numerierung-000-nummer.html)

ereetzer 2. Apr 2003 16:28


Numerierung (000+Nummer)
 
Hallo,

mein erster Beitrag und gleich eine Frage :oops:

ich möchte eine Reihe von Dateien durchnumerieren.

Dazu soll man auswählen können, wie viele vorangehende Null-Stellen
es geben soll.

Also z.Bsp. Im Edit-Feld steht4 die Nummerierung sollte dann folgende sein

0001
0002
0003
....
0010
u.s.w.

kann mir jemand dazu einen Denkanstoß geben. Was sollte ich mir angucken um das zu machen.

Die normale Numerierung ist ja kein Problem aber die Nullen davor machen mir grad zu schaffen.

thx
ereetzer

Daniel B 2. Apr 2003 16:36

Hallo und herzlich Willkommen im Forum!

Du musst im prinzip nur schauen, wenn Du den Dateinamen zusammensetzt, ob er in dem Fall 4 Stellen lang ist, wenn nicht, dann eben mit 0en auffüllen.

Das würde dann ungefähr so aussehen:
Delphi-Quellcode:
for i := 0 to "LängeDeinesStrings" do
  if Length("MeinNeuerDateiname") < 4 then
    "DateiName" := '0' + DateiName;
Hoffentlich ist es verständlich was ich meine. ;)

Grüsse, Daniel :hi:

nailor 2. Apr 2003 16:51

Geht auch eleganter (?) mit StringOfChar und dazu gibts hier schon Beispiele...

ereetzer 2. Apr 2003 17:07

thx at all, ich brauchte nur mal ne Anregung. Hat wunderbar geklappt
mit Eurer Hilfe.

hab das jetzt so gemacht:

Code:
for i2 := 0 to StrToInt(Edit9.Text) - 1 do
new := '0'+new;
ereetzer

MathiasSimmack 2. Apr 2003 17:15

Mit StringOfChar würde ich es nicht unbedingt machen. Klar, es mag gehen. Aber noch eleganter ist IMHO der Weg über den Format-Befehl. Der lässt sich vielseitig verwenden, etwa um einen Integerwert zu formatieren:
Delphi-Quellcode:
ShowMessage(Format('%d',[1234]));
Das Gute dabei ist die optionale Breitenangabe, die man nutzen kann:
Delphi-Quellcode:
ShowMessage(Format('%.8d',[1234]));
Durch das .8 wird aus dem "1234" eben ein "00001234".

Theoretisch reicht es also aus, den Wert des Editfeldes zu benutzen, um den Formatstring zusammenzusetzen:
Delphi-Quellcode:
szFmtStr := '%.' + Edit1.Text + 'd';
Ich persönlich würde aber den Weg über die Integerkonvertierung gehen um sicherzustellen, dass das Edit tatsächlich eine Zahl enthält:
Delphi-Quellcode:
szFmtStr := '%.' + inttostr(StrToIntDef(Edit1.Text,4)) + 'd';
ShowMessage(Format(szFmtStr,[1234]));

ereetzer 2. Apr 2003 17:21

halt, stopp :D

da hab ich wohl nen kleinen Gedankenfehler drin.

nach den Methoden hab ich ja immer 4 Nullen vorne dran,

wenn ich nu aber bei der 10 umzubenennenden Datei angekommen bin
soll es ja nicht 000010 sondern 00010 heißen.

Ich guck mir Daniels Code nochmal an.

ereetzer

ereetzer 2. Apr 2003 19:19

so, nachdem ich mal ganz Ruhig und ohne störende Frau :lol: an die
Sache rangegangen bin, sieht die Sache so aus:

Code:
new := Format('%.'+n2+'d'+ ' ' + new, [n]); // +n2+d = Anzahl Stellen aus Edit9
Wwobei new der neue Dateiname ist, n eine schleife die je Dateiname um 1 hochzählt und n2 Liest den Wert aus einem Edit-Feld der die Anzahl der Positionen darstellt. Nur zu Info, falls es mal einer nachmachen will.

Thx für die Denkanstöße. Auf Format wär ich nie und nimemr gekommen.

ereetzer


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