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
Benutzerbild von Coffeecoder
Coffeecoder

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

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
 
#2

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
schlecki

Registriert seit: 11. Apr 2005
Ort: Darmstadt
148 Beiträge
 
Delphi XE2 Enterprise
 
#3

AW: string inkrementieren

  Alt 1. Jun 2011, 10:48
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 ;
Sowas wie pad_type als Integer versuche ich immer zu vermeiden.

Lesbarer finde ich sowas:
Delphi-Quellcode:
type
  TPadType = (ptPadLeft, ptPadRight);

function str_pad(const Input: string;
                 pad_size: Integer;
                 const pad_string: string = '0';
                 const pad_type: TPadType = ptPadLeft): string;
Das versteht man auch in 100 Jahren noch, ohne nachschlagen zu müssen, was welcher Wert für pad_type bedeutet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: string inkrementieren

  Alt 1. Jun 2011, 11:09
Inkrementiert die Zahl in dem String und verändert nicht deren Länge.
Macht einfach genau das, was man in Mahte mal gelernt hat, wenn man eine Zahl um 1 erhöhen muß.
Delphi-Quellcode:
function StrInc(const Number: String): String;
var
  i: Integer;
begin
  Result := Number;
  i := Length(Result);
  while (i > 0) and (Result[i] in ['0'..'9']) do begin
    Result[i] := Chr(Ord(Result[i]) + 1);
    if Result[i] <> Chr(Ord('9') + 1) then
      Break;
    Result[i] := '0';
    Dec(i);
  end;
end;
oder
Delphi-Quellcode:
function StrInc(const Number: String): String;
var
  i: Integer;
begin
  Result := Number;
  i := Length(Result);
  while (i > 0) and (Result[i] in ['0'..'9']) do begin
    Result[i] := Chr((Ord(Result[i]) - Ord('0') + 1) mod 10 + Ord('0'));
    if Result[i] <> '0then
      Break;
    Dec(i);
  end;
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Cogito

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

AW: string inkrementieren

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


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 01:10 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