AGB  ·  Datenschutz  ·  Impressum  







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

String trennen

Ein Thema von Luckner · begonnen am 24. Feb 2014 · letzter Beitrag vom 25. Feb 2014
Antwort Antwort
Seite 1 von 2  1 2      
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#1

String trennen

  Alt 24. Feb 2014, 15:53
Delphi-Version: 7
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: String trennen

  Alt 24. Feb 2014, 16:01
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]<>'0then dec(i,1);
end;
ist i>0 dann ist das die letzte 0-Position

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: String trennen

  Alt 24. Feb 2014, 16:05
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) <> '0then
  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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: String trennen

  Alt 24. Feb 2014, 16:09
Ja, so wird Das funktionieren, Vielen Dank.

Luckner.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: String trennen

  Alt 24. Feb 2014, 16:10
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?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: String trennen

  Alt 24. Feb 2014, 16:24
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: String trennen

  Alt 24. Feb 2014, 16:29
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);
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: String trennen

  Alt 24. Feb 2014, 16:54
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: String trennen

  Alt 24. Feb 2014, 17:11
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: String trennen

  Alt 24. Feb 2014, 17:21
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
  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 19:22 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