Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Char Vergleich: #0 <> '' (https://www.delphipraxis.net/94204-char-vergleich-0-a.html)

Robert Marquardt 18. Jun 2007 09:31

Re: Char Vergleich: #0 <> ''
 
Delphi-Quellcode:
  if #0 = '' then
    ShowMessage('gleich')
  else
    ShowMessage('ungleich');
Dieser Code hat nur einen Breakpoint auf der "ungleich"-Zeile. Der Compiler hat also den if-Teil wegoptimiert. Das gilt fuer D6 und Turbo.
Delphi-Quellcode:
var
  a: Char;
begin
  a := #0;
  if a = '' then
    ShowMessage('gleich')
  else
    ShowMessage('ungleich');
Dieser Code gibt fuer D6 und Turbo hingegen "gleich" aus.
das sieht nach einem echten Compilerfehler aus.

Hawkeye219 18. Jun 2007 09:34

Re: Char Vergleich: #0 <> ''
 
Hallo,

folgendes findet man in der Datei "readme_upd2.htm":

Zitat:

Zitat von Borland Developer Studio 2006, Update 2 Release-Hinweise
Das Kompatibilitätsverhalten von TWideChar/String hat sich in Borland Developer Studio 2006 geändert. Unter Borland Developer Studio 2005 und früher ergab folgende Funktion TRUE. Nun ergibt sie FALSE.

Code:
function DoIt: Boolean;
var
  C: WideChar;
begin
   C := #0;
   if C = '' then
      Result := TRUE
  else
     Result := FALSE;
end;
Dieses Verhalten ist mit dem Verhalten des .NET-Compilers konsistent, könnte sich aber auf bestehenden Code auswirken.

Bei AnsiChar in Win32 gibt es ein ähnliches Verhalten, dass aber noch nicht geändert wurde, so dass es immer noch TRUE ergibt.

Es gibt auch einen zugehörigen Eintrag bei Quality Central.

Gruß Hawkeye

MasterEvil 19. Jun 2007 14:16

Re: Char Vergleich: #0 <> ''
 
Danke! Das beschreibt das Problem.

Im QC Report steht auch genau unser Problem drin:
Zitat:

Normally, I would consider this issue a corner case, however, at least one third party library (XML Partner from Turbo Power) has encountered this change.
Das XML Partner hat uns zu schaffen gemacht. Haben jetzt einfach alle Stellen die wir gefunden haben umgeändert.

Gruß,
Steffen


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 Uhr.
Seite 2 von 2     12   

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