Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Inkompatible Typen AnsiChar und Char

  Alt 19. Apr 2010, 11:32
Verwende statt dem Chr direkt AnsiChar

Chr ist bei dir ja WideChar und da kann es mit dem Byte=AnsiChar-Größe probleme geben.
Die Nummern haben ja keine Größenangabe (Byte), weswegen es dort wohl funktioniert.

PS: GetNextNummer? Denglich ist immer schön.

Delphi-Quellcode:
GetNextNumber(var sNumber: AnsiString);
// oder
GibNächsteNummer(var sNummer: AnsiString);
// oder besser noch
MakeNextNumber(var sNumber: AnsiString);
CreateNextNumber(var sNumber: AnsiString);
(Ja, mit Ä funktioniert es in aktuelleren Delphi-Versionen )

Aber warum überhaupt erst hin-und-herkonvertieren?
Delphi-Quellcode:
procedure GetNextNumber(var sNumber: AnsiString);
var xLetter: AnsiChar;
  i: Integer;
  s: AnsiString;
begin
i:=Length(sNumber);
while i>0 do
  begin
  xLetter:=sNumber[i];
  case xLetter of
    #57:
      begin
      sNumber[i]:=#65;
      break;
      end;
    #90:
      sNumber[i]:=#48;
    else
      begin
      sNumber[i]:=xLetter;
      break;
      end;
    end;// case
  dec(i);
  end;// for
s:='';
i:=0;
while i<Length(sNummer)do
  begin
  insert('0',s,1);
  inc(i);
  end;
end;
ich vermute mal bei dir fehlt auch noch ein +1
Delphi-Quellcode:
procedure GetNextNumber(var sNumber: AnsiString);
var i: Integer;
  s: AnsiString;
begin
i:=Length(sNumber);
while i>0 do
  begin
  case sNumber[i] of
    '9':
      begin
      sNumber[i]:='A';
      break;
      end;
    'Z':
      sNumber[i]:='0';
    else
      begin
      sNumber[i]:=AnsiChar(Ord(sNumber[i]) + 1);
      break;
      end;
    end;// case
  dec(i);
  end;// for
s:='';
i:=0;
while i<Length(sNumber) do
  begin
  insert('0',s,1);
  inc(i);
  end;
end;
PS: Passiert auch noch irgendwas mit dem "s"?
$2B or not $2B
  Mit Zitat antworten Zitat