AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nummerierung

Ein Thema von robinWie · begonnen am 26. Aug 2006 · letzter Beitrag vom 9. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#1

Nummerierung

  Alt 26. Aug 2006, 16:50
Hallo,
wer kennt das nicht. Man will etwas Nummerieren aber der Explorer zeigt, bei einfacher nummerierung, die Dateien so an:
Code:
1Datei
10Datei
11Datei
2Datei
3Datei
4Datei
5Datei
6Datei
7Datei
8Datei
9Datei
Das hat mich sehr gestört. Da habe ich einen Algo geschrieben der das ganze so Nummeriert:
Code:
01. Datei
02. Datei
03. Datei
04. Datei
05. Datei
06. Datei
07. Datei
08. Datei
09. Datei
10. Datei
11. Datei
Hier iser
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;
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#2

Re: Nummerierung

  Alt 26. Aug 2006, 16:54
Ähm nichts gegen deinen Algorithmus, aber gibts dafür nicht Quick- oder BubbleSort die es auch so sortieren?


http://www.delphipraxis.net/internal_redirect.php?t=344
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Nummerierung

  Alt 26. Aug 2006, 16:54
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: http://www.delphipraxis.net/internal...ight=tausender
Servus...
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Nummerierung

  Alt 26. Aug 2006, 16:57
So ist's ein bisschen kürzer
Delphi-Quellcode:
function GetNumber(Position, Max: integer): string;
begin
  Result := Format('%.' + IntToStr(Length(IntToStr(Max))) + 'd', [Position]);
end;
// Roter Kasten - mal wieder zu spät
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Nummerierung

  Alt 26. Aug 2006, 17:34
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*
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Nummerierung

  Alt 26. Aug 2006, 18:30
Zitat von Mackhack:
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.
Wo sind hier Tausender-Trenner? Der Format-Befehl enthält doch 'nur' eine Präzision. Aber er ist trotzdem seltsam formuliert:
Zitat von Flocke:
Delphi-Quellcode:
Result := Format('%.' + IntToStr(Length(IntToStr(Max))) + 'd', [Position]);
end;
2x IntToStr??? Aber die Format-Funktion ermöglicht es auch, mit '*' die Präzision direkt zu übergeben:
Delphi-Quellcode:
Result := Format('%.*d_Datei', [Max, Position]);
end;
Das liefert bei 'Max=3' und 'Position=7' den Dateinamen '007_Datei'. OK? Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Nummerierung

  Alt 26. Aug 2006, 18:59
Zitat von Jürgen Thomas:
OK? Jürgen
Er wollte aber wohl in "Max" die größte mögliche Zahl übergeben, und "Length(StrToInt(Max))" ist die Länge eben dieser größten Zahl.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

Re: Nummerierung

  Alt 26. Aug 2006, 19:03
Zitat von Flocke:
Er wollte aber wohl in "Max" die größte mögliche Zahl übergeben, und "Length(StrToInt(Max))" ist die Länge eben dieser größten Zahl.
Aua... aber mein Format-Befehl ist trotzdem schöner, müsste aber natürlich geändert werden.

Ich bin vor allem über doppeltes 'IntToStr' und die '1000er Trennzeichen' gestolpert. Tschuldige!

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Nummerierung

  Alt 26. Aug 2006, 19:54
Zitat von Jürgen Thomas:
Tschuldige!
Dafür gibt's doch überhaupt keinen Grund
Außerdem führt dein Vorschlag mit '%.*d' zu einer noch kürzeren Lösung.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Nummerierung

  Alt 27. Aug 2006, 09:58
Zitat:
So ist's ein bisschen kürze
Delphi-Quellcode:
function GetNumber(Position, Max: integer): string;
begin
  Result := Format('%.' + IntToStr(Length(IntToStr(Max))) + 'd', [Position]);
end;

// Roter Kasten - mal wieder zu spät
Warum einfach machen wenns auch schwer geht
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:19 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