Announcement

Collapse
No announcement yet.

strfunktion

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • strfunktion

    hallo,

    ich habe einen string der aus einem zeichen und sonst nur zahlen besteht. nun muss ich den die zahl um eines erhöhen, da es aber ein string ist geht das ja nicht.
    bastle schon länger daran herum.... habt jemand ein lösung?

    string = 06-10001

    und soll bei jedem durchlauf in einer schleife um eines erhöt werden

    06-10001
    06-10002
    06-10003
    .
    .
    .

    danke
    gruß
    lehrling

  • #2
    Hi Lehrling,

    ist kein Problem. Ein Beispielformular mit einem Edit und einem Button:
    <code>
    unit Unit1;<br>
    interface<br>
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls;<br>
    type
    TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    private
    { Private-Deklarationen }
    protected
    function StrInc(const AString: string): string;
    public
    { Public-Deklarationen }
    end;
    var
    Form1: TForm1;<br>
    implementation<br>
    {$R *.dfm}
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Edit1.Text := StrInc(Edit1.Text);
    end;<br>
    function TForm1.StrInc(const AString: string): string;
    Var
    i : Integer;
    l : Integer;
    c: String;
    begin
    Result := '';
    c := '';
    l := Length(AString);
    // von hinten nach vorn, so lange es Zahlen sind
    for i := Length(AString) downto 1 do
    begin
    if not (AString[i] in ['0'..'9']) then
    break;
    c := AString[i] + c;
    end;
    // c is jetzt der Zahlenteil
    // damit die Länge bleibt (z.B. bei Führungs - Nullen
    Result := Format('%0.'+ IntToStr(length(c)) +'d', [StrToInt(c) + 1]);
    // Nicht - Zahlenteil vorn wieder ran
    if length(c) < l then
    Result := copy(AString, 1, i) + Result;
    end;<br>
    end.
    </code>
    Sorry für die Formatierung. Mit CODE wird nicht eingerückt, mit PRE macht er mir immer noch eine Leerzeile. Ich bin mir sicher, dass es mit CODE schon mal ging! :-(

    Cu, Fran

    Comment

    Working...
    X