Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hochzählen Verständnisfrage (https://www.delphipraxis.net/116644-hochzaehlen-verstaendnisfrage.html)

gaisser 3. Jul 2008 15:44


Hochzählen Verständnisfrage
 
Hallo,

ich bin am verzeifeln. :wall:

will eigentlich nur einen Wert erhöhen, bekomme aber immer Probleme wenn der letzte Char eine 9 oder ein z ist...
Ich poste mal meine function, vielleicht findet einer den Fehler gleich :oops:
Delphi-Quellcode:
function Zaehlen(s:String):String;
var C:Char;
Zahl:String;
i:integer;
begin
 if s<>'' then begin
  i:=Length(s);
  c:=S[i];
    //Wenn noch ein hinzugezählt werden kann
    if c in ['0'..'8','A'..'Y','a'..'y'] then begin
    inc(c);
    Zahl:=C;
    result:=copy(S,1,i-1)+ C;
    end;
     //Wenn Z oder 0
     while c in ['9'] do begin
      if c in ['9'] then
       begin
       Zahl:=Zahl+'0';
       end;
       dec(i);
       c:=S[i];
       result:=copy(s,1,i)+Zahl;
     end;

      while c in ['Z','z'] do begin
      if c in ['Z'] then begin
      zahl:=Zahl+'A';
      end;
      if c in ['z'] then begin
      zahl:=Zahl+'a';
      end;
       dec(i);
       c:=S[i];
       result:=copy(s,1,i)+Zahl;
     end;
 end;
end;

toms 3. Jul 2008 15:51

Re: Hochzählen Verständnisfrage
 
Hallo,

Könntest du vielleicht ein wenig beschreiben, was genau die Funktion machen sollte?

littleDave 3. Jul 2008 15:55

Re: Hochzählen Verständnisfrage
 
Mir schaut das ganze etwas komisch aus. Was willst du mit den Quelltext bezwecken? Versuch mal folgende Tabelle für mich zu füllen, damit ich versteh, was du meinst
Code:
Eingabe          Ausgabe        Erwartete Ausgabe
---------------------------------------------------
'123'            '124'          ???
'abc'            'abd'          ???
'xyz'            'xya'          ???
'789'            '780'          ???
[Edit]Da war wohl wer schneller ;-) :cheers:[/Edit]

gaisser 3. Jul 2008 15:57

Re: Hochzählen Verständnisfrage
 
OK,

ich habe ein EditFeld indem ein Wert immer um eins hochzezähöt werden soll:

Bsp:

1009 soll 1010 sein
100Z soll 101A sein

Bei den Werten 0 bis 8 und a bis y klappt das, nur nicht wenn er den vorherigen Wert auch noch zählen soll.

Es sollte einfach Alphanumerisch gezählt werden können....

DeddyH 3. Jul 2008 16:01

Re: Hochzählen Verständnisfrage
 
Ich würde den String zunächst in eine Zahl wandeln, inkrementieren und dann formatiert ausgeben.

[edit] Ach nee, da käme ein anderes Ergebnis heraus, sry. [/edit]

gaisser 3. Jul 2008 16:03

Re: Hochzählen Verständnisfrage
 
Häh :gruebel:

wie meinste das?????

gammatester 3. Jul 2008 16:07

Re: Hochzählen Verständnisfrage
 
Inkrementiere jedes s[i] separat, wenn s[1] überlauft, pack eine 1 bzw ein a vor den String.

Gruß Gammatester

littleDave 3. Jul 2008 16:09

Re: Hochzählen Verständnisfrage
 
Ich hab mal den Quelltext umgeschrieben, so dass deine beiden Beispiele funktionieren. Ob alles wirklich so funktioniert, wie du es willst, weiß ich nicht:
Delphi-Quellcode:
function Zaehlen(s: string): string;
var c: char;
    i: integer;
begin
  if s <> '' then
  begin
    i := length(s);
    c := s[i];
    if c in ['0'..'8', 'A'..'Y', 'a'..'y'] then
    begin
      inc(c);
      s[i] := c;
    end;

    c := s[i];
    while c in ['9', 'z', 'Z'] do
    begin
      if c in ['z', 'Z'] then
        s[i] := 'A'
      else
        s[i] := '0';
      dec(i);
      if i < 1 then
         break; // da musst du noch etwas rumbasteln, dass auch '999' usw. funktioniert
      c := s[i];
      if not (c in ['9', 'z', 'Z']) then
      begin
        inc(c);
        s[i] := c;
        break;
      end;
    end;
  end;
  result := s;
end;
(PS: deine Codeformatierung ist nicht ganz optimal ^^, musste es erst umformatieren um die Funktionalität zu erkennen)

gaisser 3. Jul 2008 16:13

Re: Hochzählen Verständnisfrage
 
Wow danke... haste mir schwer weitergeholfen :thumb:


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