Also, ich arbeite mit Delphi 5. Ich weiß nicht, ob das etwas zu sagen hat ?
Der Code mal ganz einfach dargestellt:
Den SubStr bekomme ich über:
Delphi-Quellcode:
BufStr :
Array[0..39]
of char;
reg : TRegistry;
DrvName :
String;
DeviceIoControl(r, IOCTL_STORAGE_QUERY_PROPERTY , @
query, SizeOf(
query), @buffer, sizeof(buffer), dwBytesReturned,
nil );
j := 0;
for i := 0
to 39
do begin
if buffer[i] = #0
then break;
if buffer[i] >= '
'
then begin
BufStr[j] := buffer[i];
inc(j);
end;
end;
DrvName:=BufStr;
Zur Kontrolle gebe ich den SubStr DrvName in einer ListBOX aus.
Dort wird der Inhalt von DrvName mit '00HLFS-01G6U0' korrekt angezeigt.
Den SuchString hole ich mir aus der Registry.
Delphi-Quellcode:
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OPenKey('SYSTEM\CurrentControlSet\Services\Disk\Enum',false);
s:=reg.ReadString('6');
Die 6 ist momentan zum testen fest vergeben -> an dieser Stelle steht der Suchstring bei mir in der Registry -> wird aber später automatisch gesucht.
Zur Kontrolle gebe ich den SuchStr S wieder in einer ListBOX aus.
Dort wird der Inhalt von S mit
'USBSTOR\Disk&Ven_WDC_WD30&Prod_00HLFS-01G6U0&Rev_4V01\D57860C59536&0'
korrekt angezeigt.
Jedoch bringt Pos(DrvName,s) bei mir immer 0 !
Komisch ???
Mein Ziel ist es, den Namen eine Festplatte (hier als TeilString DrvName) in der Registry
eindeutig der dortigen Count-Variable zuzuordnen.