Autor Beitrag
bjoern_bs
Hält's aus hier
Beiträge: 4


Delphi 6 Personal
BeitragVerfasst: Mo 02.05.05 12:20 
Hallo Zusammen!

Habe mal eine Frage zum Thema Integer/String....
Ich schreibe gerade an einem Programm, das mir eine ganze Reihe von html Dateien generiert.
Dazu wird eine Schleife mit dem Zählindex (vom Typ Integer) mehrmals durchlaufen und eine Datei mit:
ausblenden Quelltext
1:
dateiname:=('Seite_'+IntToStr(i)+'.htm');					

erstellt.

Das Ergebnis sind dann Dateien, die wie folgt aussehen:
Seite_1.htm, Seite_2.htm ... Seite_9.htm, Seite_10.htm, ... Seite_n.htm

Ich hätte allerdings lieber Dateinamen, bei denen Die Zahl am Ende immer gleich viele Stellen hat, also z.B.:
Seite_001.htm, Seite_002.htm usw.

Gibt es hierfür eine einfache Lösung?


Vielen Dank für Eure Hilfe,
Viele Grüße Björn
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Mo 02.05.05 12:24 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function zweistellen(x:integer):string;
begin
  result := inttostr(x);
  if x < 10 then result := '0'+result;
end;

dateiname:=('Seite_'+zweistellen(i)+'.htm');

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 02.05.05 12:26 
Versuch mal:
ausblenden Delphi-Quelltext
1:
Format('%.3d', [X]);					

bzw.
ausblenden Delphi-Quelltext
1:
StringReplace(Format('%.3d', [X]), ' ''0', [rfReplaceAll]);					

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
bjoern_bs Threadstarter
Hält's aus hier
Beiträge: 4


Delphi 6 Personal
BeitragVerfasst: Mo 02.05.05 13:03 
Vielen Dank für die superschnellen Antworten!

Habe mich für die Version mit der zusätzlichen Funktion entschieden, da sich diese einfacher und schneller in mein Programm integrieren lässt!
Hab das ganze dann noch auf einen Zahlenbereich bis 999 (also auch mit zwei führenden Nullen) erweitert! Funktioniert prima!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function dreistelligeZahl(x:integer):string;
begin
  result := inttostr(x);
  if x < 10 then result:= '00'+result;
  if x >= 10 then
    if x < 100 then result := '0'+result;
end;


Nochmal vielen Dank!
Grüße aus dem noch sonnigen Lipperland, Björn
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 02.05.05 13:24 
user profile iconbjoern_bs hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
function dreistelligeZahl(x:integer):string;
begin
  result := inttostr(x);
  if x < 10 then result:= '00'+result;
  if x >= 10 then
    if x < 100 then result := '0'+result;
end;


Optimierung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
function dreistelligeZahl(x:integer):string;
begin
  result := inttostr(x);
  if x < 100 then result := '0'+result;
  if x < 10 then result := '0'+result;
end;

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 02.05.05 14:12 
Kommentar zu dreistelligeZahl: Die negativen Zahlen sollte man nicht vergessen. Sonst DWord nehmen, Assertion bzw. kleine Notiz anbringen. Ist hier vielleicht etwas pedantisch, aber wenn man eine Funktion / Prozedur einfach so "veröffentlicht", dann ist das sicher kein Nachteil... ;)

Aber wie wär's mit dem hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var
 i: Integer;
begin
 i := 9;
 ShowMessage(Format('%.3d', [i]));
end;

Edit: BenBE, hatte zwar deinen Beitrag gelesen aber irgendwie nicht realisiert, dass es schon die Lösung war, sorry :oops:
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 02.05.05 18:59 
NP. Das passiert im Gedränge ;-)

BTW: Wenn Du statt %.3d %.3x schreibst, gibt er dir dreistellige Hexzahlen aus. :les:

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.