Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlerhafter PChar vergleich (https://www.delphipraxis.net/129960-fehlerhafter-pchar-vergleich.html)

epileptic_squirrel 28. Feb 2009 15:23


Fehlerhafter PChar vergleich
 
Hallo, ich habe folgendes (an sich triviale) Problem:
Ich möchte 2 PChar Werte miteinander vergleichen, allerdings ist der Vergleich False obwohl beide Werte gleich sind.
Hier mal der Code:

Delphi-Quellcode:
procedure SetRegisterValue(var CPU :TCPU; RegisterName :PChar; NewValue :PChar);
var i :Integer;
    rname:PChar;
begin
  i := 0;
  While (i < Length(CPU.Registers)) do
  begin
    rname := CPU.Registers[i].Name;
    if rname = RegisterName then // <- Immer False
    begin
      CPU.Registers[i].Value := NewValue;
      Break;
    end;
    Inc(i);
  end;
end;
Aufruf:
Delphi-Quellcode:
SetRegisterValue(CPU, 'A', '10');
Wenn ich den Vergleich mit pos() mache funktioniert es seltsamerweise.

toms 28. Feb 2009 15:25

Re: Fehlerhafter PChar vergleich
 
Vergleiche mit AnsiStrComp resp. StrComp

himitsu 28. Feb 2009 15:55

Re: Fehlerhafter PChar vergleich
 
du vergleichst so nur die Pointer (PChar) und diese zeigen auf unterschiedliche Speicherbereiche, selbst wenn in den Speicherbereichen je der Selbe String-Inhalt drin ist.

Du willst aber bestimmt den Inhalt und nicht die Zeiger vergleichen? (siehe toms Vorschlag)

DeddyH 28. Feb 2009 16:01

Re: Fehlerhafter PChar vergleich
 
Zur Not müsste es auch mit CompareMem gehen, aber die angesprochenen Routinen sind schon geeigneter.

epileptic_squirrel 28. Feb 2009 16:13

Re: Fehlerhafter PChar vergleich
 
@toms:
Danke funktioniert :-D


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