Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String trennen (https://www.delphipraxis.net/179276-string-trennen.html)

Luckner 24. Feb 2014 14:53

Delphi-Version: 7

String trennen
 
Hallo,
habe eine Artikennr. Die ist immer 5-Stellig, wobei falls die Artikel-Nr. kleiner als 5 Stellen hatt, dann wird der Rest mit "0" aufgefüllt. Bsp.: 00005, 00050, 00505, 05032, 75602 usw. Ich soll die zahlen, so darstellen, dass die vorangestellten '0' mit einem gewissen Abstand zum Rest der Zahlen angezeigt werden. Bsp.: 0000 5, 000 50, 00 505, 0 5032, 75602 usw. Habe mit ansicomparestr() rumprobiert, dass Ergenis war mager. Wie könnte ich die Anzahl der Nullen vor der eigentlichen Zahl herausfinden?

Danke, Luckner

p80286 24. Feb 2014 15:01

AW: String trennen
 
Delphi-Quellcode:
i:=0;
maxlen:=length(zeile);
if maxlen>0 then begin
  i:=1;
  while (i<maxlen) and (Zeile[i]='0') do inc(i,1);
  if Zeile[i]<>'0' then dec(i,1);
end;
ist i>0 dann ist das die letzte 0-Position

Gruß
K-H

Union 24. Feb 2014 15:05

AW: String trennen
 
Du suchst das erste Auftreten einer Ziffer ungleich Null von links her (Nicht getestet):
Delphi-Quellcode:
DigitPos := 0;
for i := 0 to length(ArtNr) do
begin
  if copy(ArtNr, i, 1) <> '0' then
  begin
    DigitPos := i;
    break;
  end;
end

if DigitPos > 0 then
  ArtNr := StringOfChar('0', length(ArtNr)-DigitPos+1) + ' ' + copy(ArtNr,DigitPos, length(ArtNr)-DigitPos+1);
Ich habe hier absichtliche keine Strin-Indexierung verwendet, damit es bei neueren Compilern / Plattformen keine Probleme gibt.

Luckner 24. Feb 2014 15:09

AW: String trennen
 
Ja, so wird Das funktionieren, Vielen Dank.

Luckner.

Sir Rufo 24. Feb 2014 15:10

AW: String trennen
 
Ist die Artikelnummer jetzt ein String oder ein Integer?
Brauchst du das hier nur für die Darstellung oder werden die Artikelnummern auch mit führenden Nullen gespeichert?

p80286 24. Feb 2014 15:24

AW: String trennen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1249328)
Ist die Artikelnummer jetzt ein String oder ein Integer?
Brauchst du das hier nur für die Darstellung oder werden die Artikelnummern auch mit führenden Nullen gespeichert?

Das kann eigentlich nur ein String sein, denn führende Nullen in Integern gibt es doch nicht?

Gruß
K-H

Jasocul 24. Feb 2014 15:29

AW: String trennen
 
Ich denke, das Beispiel von Union funktioniert nicht. Die Indexierung von Strings (auch bei der Copy-Funktion) beginnt bei 1. Aber der Ansatz ist richtig, nicht über die Indizierung wie im Beispiel von p80286 zu gehen.

Mein (ungeprüfter) Vorschlag:
Code:
  i := 1;
  while copy(ArtNr, i, 1) = '0' do
    inc(i);
  if i > 1 then
    insert(' ', ArtNr, i);

Sir Rufo 24. Feb 2014 15:54

AW: String trennen
 
Zitat:

Zitat von p80286 (Beitrag 1249331)
Zitat:

Zitat von Sir Rufo (Beitrag 1249328)
Ist die Artikelnummer jetzt ein String oder ein Integer?
Brauchst du das hier nur für die Darstellung oder werden die Artikelnummern auch mit führenden Nullen gespeichert?

Das kann eigentlich nur ein String sein, denn führende Nullen in Integern gibt es doch nicht?

Gruß
K-H

Wenn das nur für die Darstellung ist, dann kann das durchaus ein Integer sein, der dann für die Darstellung in einen String mit führenden Nullen umgewandelt wird.

p80286 24. Feb 2014 16:11

AW: String trennen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1249342)
Wenn das nur für die Darstellung ist, dann kann das durchaus ein Integer sein, der dann für die Darstellung in einen String mit führenden Nullen umgewandelt wird.

Nichts gegen einzuwenden, nur wird die Darstellung von Zahlen und Ziffernreihen eigentlich nur über Strings vorgenommen, daher käme es mir nie in den Sinn an Zahlen zu denken.
Ich weiß Excel z.B. denkt da vollkommen anders und versucht mit allem was numerisch sein könnte zu rechnen. Dabei gehen natürlich auch führende Nullen über Bord. Da hilft es nur massiv auf die Interpretation als Text/String zu bestehen.

Gruß
K-H

Luckner 24. Feb 2014 16:21

AW: String trennen
 
Die Lösung von p80286 hat funktioniert. Die Zahlenbeispiele waren Strings. Hatte vergessen Das zu erwähnen, wobei Integer mit führenden Nullen wären nicht einfach darstellbar. Danke für die schnelle Lösung.

Luckner


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 Uhr.
Seite 1 von 2  1 2      

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