![]() |
Nummerierung
Hallo,
wer kennt das nicht. Man will etwas Nummerieren aber der Explorer zeigt, bei einfacher nummerierung, die Dateien so an:
Code:
Das hat mich sehr gestört. Da habe ich einen Algo geschrieben der das ganze so Nummeriert:
1Datei
10Datei 11Datei 2Datei 3Datei 4Datei 5Datei 6Datei 7Datei 8Datei 9Datei
Code:
Hier iser
01. Datei
02. Datei 03. Datei 04. Datei 05. Datei 06. Datei 07. Datei 08. Datei 09. Datei 10. Datei 11. Datei Leider unterstüzt er "nur" maximal 1.000.000 Einträge
Delphi-Quellcode:
function GetNumber(Position, Max: integer): string;
var NOM: string; begin if Length(IntToStr(Position+1))=1 then begin if Max >= 100000 then NOM:='00000'+IntToStr(Position+1)+'. '; if (Max>=10000) and (Max <100000) then NOM:='0000'+IntToStr(Position+1)+'. '; if (Max>=1000) and (Max<10000) then NOM:='000'+IntToStr(Position+1)+'. '; if (Max>=100) and (Max<1000) then NOM:='00'+IntToStr(Position+1)+'. '; if (Max>=10) and (Max<100) then NOM:='0'+IntToStr(Position+1)+'. '; if (Max>=1) and (Max<10) then NOM:=IntToStr(Position+1)+'. '; end; if Length(IntToStr(Position+1))=2 then begin if Max >=10000 then NOM:='0000'+IntToStr(Position+1)+'. '; if (Max>=10000) and (Max <10000) then NOM:='000'+IntToStr(Position+1)+'. '; if (Max>=1000) and (Max<10000) then NOM:='00'+IntToStr(Position+1)+'. '; if (Max>=100) and (Max<1000) then NOM:='0'+IntToStr(Position+1)+'. '; if Max<100 then NOM:=IntToStr(Position+1)+'. '; end; if Length(IntToStr(Position+1))=3 then begin if Max>=100000 then NOM:='000'+IntToStr(Position+1)+'. '; if (Max>=10000) and (Max <100000)then NOM:='00'+IntToStr(Position+1)+'. '; if (Max>=1000) and (Max<10000) then NOM:='0'+IntToStr(Position+1)+'. '; if Max<1000 then NOM:=IntToStr(Position+1)+'. '; end; if Length(IntToStr(Position+1))=4 then begin if Max>=100000 then NOM:='00'+IntToStr(Position+1)+'. '; if (Max>=10000) and (Max<100000) then NOM:='0'+IntToStr(Position+1)+'. '; if (Max>=1000) and (Max<10000) then NOM:=IntToStr(Position+1)+'. '; end; if Length(IntToStr(Position+1))=5 then begin if Max>=100000 then NOM:='0'+IntToStr(Position+1)+'. '; end; if Length(IntToStr(Position+1))=6 then begin if Max>=100000 then NOM:=IntToStr(Position+1)+'. '; end; Result := Nom; end; |
Re: Nummerierung
Ähm nichts gegen deinen Algorithmus, aber gibts dafür nicht Quick- oder BubbleSort die es auch so sortieren? :gruebel:
![]() |
Re: Nummerierung
Erspare Dir doch die mords Schreibarbeit. Lass die Zahl hochzählen wie sie mag und bevor du es dem Dateinamen zuweist, lass dies noch drüber laufen:
![]() |
Re: Nummerierung
So ist's ein bisschen kürzer :wink:
Delphi-Quellcode:
// Roter Kasten - mal wieder zu spät :stupid:
function GetNumber(Position, Max: integer): string;
begin Result := Format('%.' + IntToStr(Length(IntToStr(Max))) + 'd', [Position]); end; |
Re: Nummerierung
Sehe ich das falsch oder will er Dateinamen mit Zahlen davor setzen? Das hat doch nix mit 1000er Trennzeichen zu tun was die anderen gepostet haben.
Hm.. *Gruebel* |
Re: Nummerierung
Zitat:
Zitat:
Delphi-Quellcode:
Das liefert bei 'Max=3' und 'Position=7' den Dateinamen '007_Datei'. OK? Jürgen
Result := Format('%.*d_Datei', [Max, Position]);
end; |
Re: Nummerierung
Zitat:
|
Re: Nummerierung
Zitat:
Ich bin vor allem über doppeltes 'IntToStr' und die '1000er Trennzeichen' gestolpert. Tschuldige! Jürgen |
Re: Nummerierung
Zitat:
Außerdem führt dein Vorschlag mit '%.*d' zu einer noch kürzeren Lösung. |
Re: Nummerierung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 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