![]() |
AW: führende null entfernen
Zitat:
|
AW: führende null entfernen
Ich habe auch noch etwas herumgespielt, sowas kam dabei raus:
Delphi-Quellcode:
Beispiel Aufruf:
function RemLeadChar(const Input: string; const LeadChar: Char): string;
var i, ii: Integer; begin ii := 0; if Length(Input) > 0 then // ein zeichen minimum um weiter zu kommen if Input[1] = LeadChar then // fängt String nicht mit LeadChar an gibts nichts zu tun for i := 1 to Length(Input) do // komplette stringlänge abarbeiten initialisieren if Input[i] = LeadChar then ii := i else Break; // kommt vorne ein LeadChar vor Position merken if ii > 0 then Result := Copy(Input, ii+1, Length(Input)) // entweder anfang verwerfen else Result := Input; // oder eingabe zurück end;
Delphi-Quellcode:
Memo1.Lines.Add(RemLeadChar(Edit1.Text,'0'));
|
AW: führende null entfernen
Wie wärs einfach hiermit?
Delphi-Quellcode:
function RemLeadChar(const Input: string; const LeadChar: Char): string;
begin if Length(Input) > 0 then begin Result := Input; while (Result[1] = LeadChar) do delete(Result, 1, 1); end else Result := ''; end; |
AW: führende null entfernen
oder
Delphi-Quellcode:
function RemLeadChar(const Input: string; const LeadChar: Char): string;
begin Result := Input; if Length(Result) > 0 then while Result[1] = LeadChar do delete(Result, 1, 1); end; |
AW: führende null entfernen
Btw: Das mehrfache
Delphi-Quellcode:
ist ziemlich imperformant. Ich würde erstmal in einer Schleife die Stelle der ersten nicht-Null suchen und danach per
Delete
Delphi-Quellcode:
alles bis zu diesem Index am Stück entfernen.
Delete
|
AW: führende null entfernen
Zitat:
|
AW: führende null entfernen
Das ist ja das schöne bei Delphi, jeder kann seine persönliche Note einbringen :love:
Müssen viele LeadChars entfernt werden ist mein Vorschlag bestimmt nen takken schneller ^_^ Mini Upgrade vs Leerstrings
Delphi-Quellcode:
und noch ein Vorschlag zu dem While Delete
function RemLeadChar(const Input: string; const LeadChar: Char): string;
var i, ii: Integer; begin ii := 0; if Length(Input) > 0 then // ein zeichen minimum um weiter zu kommen if Input[1] = LeadChar then // fängt String nicht mit LeadChar an gibts nichts zu tun for i := 1 to Length(Input) do // komplette stringlänge abarbeiten initialisieren if Input[i] = LeadChar then ii := i else Break; // kommt vorne ein LeadChar vor Position merken if ii > 0 then Result := Copy(Input, ii+1, Length(Input)) // entweder anfang verwerfen else Result := Input; // oder eingabe zurück if Result = '' then Result := LeadChar; // falls input leer oder nur aus LeadChars bestand, gib wenigstens ein LeadChar zurück end;
Delphi-Quellcode:
function RemDelLeadChar(const Input: string; const LeadChar: Char): string;
var i: Integer; begin i := 1; Result := Input; if ((Length(Input) > 0) and (Input[1] = LeadChar)) then begin while (Input[i] = LeadChar) do inc(i); Delete(Result, 1, i-1); end; if Result = '' then Result := LeadChar; end; |
AW: führende null entfernen
for-Schleifen, die etwas löschen (wodurch die Nachfolger aufrücken), einfach immer mit downto machen. Klappt übrigens auch nicht mit for-in-Schleifen.
|
AW: führende null entfernen
Zitat:
|
AW: führende null entfernen
Kann ich ein Beispiel bekommen wo der genannte Code nicht funktioniert? Ich habe es mit allerlei kram getestet ohne auf Fehler zu stossen. Ein Delete bzw Cut kommt bei mir ja auch nur einmal vor.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz