AGB  ·  Datenschutz  ·  Impressum  







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

string inkrementieren

Ein Thema von Cogito · begonnen am 1. Jun 2011 · letzter Beitrag vom 6. Jun 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#1

AW: string inkrementieren

  Alt 1. Jun 2011, 10:13
..
Delphi-Quellcode:
procedure incBCStr(var AStr: string);
var
  i, l: Integer;
begin
  l := Length(AStr);
  AStr := IntToStr(StrToInt64(AStr)+1);
  for i := Length(AStr) to l-1 do
    AStr := '0' + AStr;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: string inkrementieren

  Alt 1. Jun 2011, 10:15
..
Delphi-Quellcode:
procedure incBCStr(var AStr: string);
var
  i, l: Integer;
begin
  l := Length(AStr);
  AStr := IntToStr(StrToInt64(AStr)+1);
  for i := Length(AStr) to l-1 do
    AStr := '0' + AStr;
end;
Ja meine geht auch in die Richtung. Ich poste sie dann heute abend.
Coffeecoder
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#3

AW: string inkrementieren

  Alt 1. Jun 2011, 10:24
Ich habe dafür eine Funktion, die str_pad von php nachbildet.
Dabei gibt man an, auf wieviel Zeichen der String aufgefüllt werden soll (pad_size), mit welcher zeichenfolge aufgefüllt werden soll(pad_string) und dann noch, ob links oder rechts aufgefüllt werden soll (pad_type 0/1)

Delphi-Quellcode:
// pad a string to pad_size with pad_string characters (php-like)
function str_pad(const Input : string;
                 pad_size : integer;
                 const pad_string : string = '0';
                 const pad_type : Integer = 0) : string ;
var
  i : integer;
  dif : Integer ;
  c: char ;
begin
  Result := Input;
  if Length(Input) < pad_size then
  begin
    dif := pad_size - Length(Input) ;
    SetLength(Result,pad_size) ;

    case pad_type of

        // STR_PAD_LEFT
        0:
          begin
             for i := 1 to dif do
             begin
                 if i <= Length(pad_string) then c := pad_string[i]
                 else c := pad_string[Length(pad_string)] ;
                 Result[i] := c ;
             end;

             try
               for i := dif+1 to pad_size do Result[i] := Input[i-dif] ;
             except
             end;
          end;

        // STR_PAD_RIGHT
        1:
          begin
             for i := Length(Input)+1 to pad_size do
             begin
                 if i-dif <= Length(pad_string) then c := pad_string[i-dif]
                 else c := pad_string[Length(pad_string)] ;
                 Result[i] := c ;
             end;

             try
               for i := 1 to dif do Result[i] := Input[i] ;
             except
             end;
          end;
    end;

  end;
end;
  Mit Zitat antworten Zitat
Cogito

Registriert seit: 12. Jun 2008
280 Beiträge
 
#4

AW: string inkrementieren

  Alt 1. Jun 2011, 10:29
Super! Vielen Dank für die schnellen Antworten!!!
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: string inkrementieren

  Alt 1. Jun 2011, 10:14
Die wäre u.U. auch für andere interessant, obwohl Format() das ja auch kann
OK Ich poste die dann wenn ich an meinem Rechner sitze.
Coffeecoder
  Mit Zitat antworten Zitat
Benutzerbild von Coffeecoder
Coffeecoder

Registriert seit: 27. Apr 2011
242 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: string inkrementieren

  Alt 5. Jun 2011, 18:23
Die wäre u.U. auch für andere interessant, obwohl Format() das ja auch kann
OK Ich poste die dann wenn ich an meinem Rechner sitze.
Hey,

Mir ist klar, dass mittlerweile sehr viele Möglichkeiten gepostet worden sind.
Ich hab ein wenig nach meiner Funktion gesucht und habe sie endlich gefunden.
Hier mal meinen Vorschlag:

Delphi-Quellcode:
function erweiternFuehrendeNull(laenge : integer; zahl : string) : string ;
var
        temp : string;
begin
        temp := zahl;

        while (length(temp) < laenge) do
        begin
                temp := '0' + temp;
        end;

        result := temp;
end;
Coffeecoder
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#7

AW: string inkrementieren

  Alt 5. Jun 2011, 18:57
temp := '0' + temp; in einer Schleife = Aua
result := temp; - Warum nicht gleich Result verwenden? (Wir sind hier nicht in C, wo das zuweisen des Results [return] die Funktion verläßt)
Aber statt Temp hätte man auch Zahl verändern können (solange man den Parameter nicht als CONST übergibt)
while (...) do - Delphi kommt mit wesentlich weniger Klammern aus.

Und dann noch völlig unnötige Leerzeilen entfernt (hier machen die ja nichts übersichtlicher) und schon kommt man von 13 auf 6 Code-Zeilen.
Delphi-Quellcode:
function ErweiternFuehrendeNull(const Zahl: String; Laenge: Integer): String;
begin
  Result := Zahl;
  while Length(Result) < Laenge do
    Include('0', Result, 1); //Result := '0' + Result; ist aber dennoch nicht viel besser (Aua)
end;
Delphi-Quellcode:
function ErweiternFuehrendeNull(const Zahl: String; Laenge: Integer): String;
begin
  Result := DupeString('0', Laenge - Length(Zahl)) + Zahl;
end;
PS: Nicht wundern, aber "Zahl soll Länge lang werden", also hab ich die Parameter getauscht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 5. Jun 2011 um 19:01 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:54 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-2025 by Thomas Breitkreuz