![]() |
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:
Aufruf:
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;
Delphi-Quellcode:
Wenn ich den Vergleich mit pos() mache funktioniert es seltsamerweise.
SetRegisterValue(CPU, 'A', '10');
|
Re: Fehlerhafter PChar vergleich
Vergleiche mit AnsiStrComp resp. StrComp
|
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) |
Re: Fehlerhafter PChar vergleich
Zur Not müsste es auch mit CompareMem gehen, aber die angesprochenen Routinen sind schon geeigneter.
|
Re: Fehlerhafter PChar vergleich
@toms:
Danke funktioniert :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz