AGB  ·  Datenschutz  ·  Impressum  







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

Inkompatible Typen AnsiChar und Char

Ein Thema von Angel4585 · begonnen am 19. Apr 2010 · letzter Beitrag vom 20. Apr 2010
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Inkompatible Typen AnsiChar und Char

  Alt 19. Apr 2010, 11:16
Hallo,

ich bekomme in folgendem Codeausschnitt an der markierten Stelle die Compilermeldung "Inkompatible Typen AnsiChar und Char"

Delphi-Quellcode:
 
procedure GetNextNummer(var sNummer: AnsiString);
var xLetter: Byte;
  i: Integer;
  s: AnsiString;
begin
i:=Length(sNummer);
while i>0 do
  begin
  xLetter:=Ord(sNummer[i]);
  case xLetter of
    57:
      begin
      sNummer[i]:=Chr(65); //Keine Meldung
      break;
      end;
    90:sNummer[i]:=Chr(48); //Keine Meldung
    else
      begin
      sNummer[i]:=Chr(xLetter); // Hier kommt die Meldung
      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;
sNummer[i] sollte doch en AnsiChar verlangen und Chr() liefert auch AnsiChar.
xLetter ist vom Typ Byte, sollte also auch locker passen.
Wenn ich anstatt xLetter zB 230 nehm funktionierts muss also was mit xLetter zu tun haben.
Aber wo genau ist das Problem? Ich seh es nicht

Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
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
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Inkompatible Typen AnsiChar und Char

  Alt 20. Apr 2010, 09:34
Danke himi AnsiChar funktioniert perfekt

Eine Änderung bei "s" ist bisher nicht vorgesehen, auch wenn es teilweise tatsächlich für 5 gehalten wird.
Ich habs dem Chef gesagt, aber wenn er sagt nö heisst das nunmal, dass ichs nicht mache.
Und du hattest recht, da fehlte tatsächlich ein +1

Ich steh auf Denglisch, das bleibt so
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Inkompatible Typen AnsiChar und Char

  Alt 20. Apr 2010, 10:41
Zitat von Angel4585:
Eine Änderung bei "s" ist bisher nicht vorgesehen,
Der Witz dabei ist, daß "s" nicht verwendet wird und somit die letzen Zeilen "sinnlos" ist.

Heißt, daß diese Funktion genau das selbe Ergebnis liefert.
Delphi-Quellcode:
procedure GetNextNummer(var sNummer: AnsiString);
var i: Integer;
begin
i:=Length(sNummer);
while i>0 do
  begin
  case sNummer[i] of
    'Z':
      sNummer[i]:='0';
    '9':
      begin
      sNummer[i]:='A';
      break;
      end;
    else
      begin
      sNummer[i]:=AnsiChar(Ord(sNumber[i]) + 1);
      break;
      end;
    end;// case
  dec(i);
  end;// for
end;
$2B or not $2B
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Inkompatible Typen AnsiChar und Char

  Alt 20. Apr 2010, 10:59
achso du meinst die Variable s.. hmm.. jetz wo du es sagst versteh ich diese Zeilen auch nicht, die füllen s ja nur mit nullen.. naja aber ich habs nich gemacht, das ist von meinem Vorgänger
Martin Weber
Ich bin ein Rüsselmops
  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 15:04 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