Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Führende nullen aus einem String löschen (https://www.delphipraxis.net/11121-fuehrende-nullen-aus-einem-string-loeschen.html)

Nalincah 31. Okt 2003 12:37


Führende nullen aus einem String löschen
 
Ich hab z.B. folgenden String: "0000058356"
Daraus will ich das machen: "58356"

habs mit ner while und ner for schleife versucht
und das klappt auch nicht:

Delphi-Quellcode:
value := inttostr(strtoint(value));
Gibts da evtl. ne funktion?

Christian Seehase 31. Okt 2003 12:41

Re: Führende nullen aus einem String löschen
 
Moin Sebastian,

Du könntest es z.B. auch so machen:

Delphi-Quellcode:
while pos('0',Value) = 1 do Delete(Value,1,1);
mir ist nur nicht klar, was an Deinem Beispiel nicht funktioniert.
Damit müsste das auch gehen, genau genommen sogar besser.

himitsu 31. Okt 2003 12:42

Re: Führende nullen aus einem String löschen
 
Also bei mir geht das.

Delphi-Quellcode:
value := inttostr(strtoint(value));
Was geht den bei dir daran nich? (Fehlermeldung...)

Nalincah 31. Okt 2003 12:50

Re: Führende nullen aus einem String löschen
 
Ich benutze das mit dem Quickreport
hab die kompo dbtext erweitert und ein OnPrint-Ereignis erstellt.
Wenn man jetzt ein db-feld auswählt mit den nullen am anfang dann soll der im onprint ereignis die nullen löschen. hab das z.b. auch mit

Delphi-Quellcode:
for i := 0 to length(value)
begin
  if value[i] = '0' then
    delete(value, i, 1)
  else
    break;
end;
Im einzelschritt zeigt der mir für "Value[i] beim ersten mal "#0" an. Was heißt das?

Christian Seehase 31. Okt 2003 12:54

Re: Führende nullen aus einem String löschen
 
Moin Sebastian,

die Indizes eines Strings fangen bei 1 an, nicht bei 0.

Aber was funktioniert bei Dir an der von Dir geposteten Zeile nicht?

Nalincah 31. Okt 2003 12:56

Re: Führende nullen aus einem String löschen
 
nichts funktioniert...das der entfernt da die nullen einfach nicht. das steht das gleiche wie vorher

Nalincah 31. Okt 2003 13:02

Re: Führende nullen aus einem String löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kann mir jemand das erklären?? Das ist der Wert von i nach dem ersten durchlauf

Christian Seehase 31. Okt 2003 13:07

Re: Führende nullen aus einem String löschen
 
Moin Sebastian,

Zitat:

Zitat von General2003
Kann mir jemand das erklären?? Das ist der Wert von i nach dem ersten durchlauf

Zitat:

Zitat von Christian Seehase
die Indizes eines Strings fangen bei 1 an, nicht bei 0.

also muss Deine Schleife auch bei 1 anfangen, und nicht bei 0.

Wie ist Value deklariert. So recht erklären kann ich mir das so nicht.

Nalincah 31. Okt 2003 13:11

Re: Führende nullen aus einem String löschen
 
Ich starte die Schleife doch mit i = 1
Guck mal genau...

So sieht der Kopf der Proc. aus:

Delphi-Quellcode:
procedure TQRDBTextNull.MyOnprint(sender: TObject; var Value: String);

himitsu 31. Okt 2003 13:13

Re: Führende nullen aus einem String löschen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab noch 'nen anderen komischen Fehler - kein do. (for to do)

Wenn ich so was machen meckert mein Compiler, deiner anscheinend nicht.
Oder sehe ich da was nicht?

Christian Seehase 31. Okt 2003 13:19

Re: Führende nullen aus einem String löschen
 
Moin Sebastian,

ich war von der Schleife die Du oben gepostet hast ausgegangen, da steht noch 0.
Probier mal das Projekt über Projekt erzeugen neu zu erstellen.

Nalincah 31. Okt 2003 13:28

Re: Führende nullen aus einem String löschen
 
:wall: :wall: :wall: :wall:

Der Source den ich verändert hab war aus nem Package in dem meine neuen Kompos liegen. Leider hab ich nur den Source im Projekt verändert, das Package aber nicht neu kompiliert. Deshalb hat der auch nicht bei

Delphi-Quellcode:
for i := 1 to length(value)
begin

end;
gemeckert

himitsu 31. Okt 2003 13:30

Re: Führende nullen aus einem String löschen
 
Delphi-Quellcode:
For i := 1 to Length(value) do
  If value[i] = '0' Then Delete(value, i, 1) Else Break;
Wenn du das so machst, löschst du nur die 1. 3. 5. ... Null.
Wenn du schon so löschen möchtest, solltest das so abändern.
(die Zeichenfolge verschiebt sich doch nach links, wenn vorn etwas gelöscht wird)
Delphi-Quellcode:
For i := 1 to Length(value) do
  If value[i] = '0' Then Delete(value, 1, 1) Else Break;
                                      {^}
Das entspricht deinen geposteten Version, nur etwas optimiert und die 0 durch 1 ersetzt.
(0 => 1 siehe Chris)

Nalincah 31. Okt 2003 13:32

Re: Führende nullen aus einem String löschen
 
Da ich jetzt weiß was ich falsch gemacht hab, hab ich das so gemacht

value := inttostr(strtoint(value));

Klappt jetzt Wunderbar!
Danke! :dp:

Christian Seehase 31. Okt 2003 13:32

Re: Führende nullen aus einem String löschen
 
Moin Himitsu,

wobei ich da die Variante mit der While Schleife übersichtlicher finde.

himitsu 31. Okt 2003 13:35

Re: Führende nullen aus einem String löschen
 
Wenn die nicht neu kompiliert hast, ist es wahrscheinlich, das der Debuger das "i" im Quellcode nicht mit "i" im laufenden Programm verbunden hat. Und daher auch 0 in deinem Bild anzeigte.

Nalincah 31. Okt 2003 14:17

Re: Führende nullen aus einem String löschen
 
Ich hab in meinem Projekt den Source gesehen, aber kompiliert wurde das Programm immer mit der alten dcu, richtig?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 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