AGB  ·  Datenschutz  ·  Impressum  







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

POS liefert bei Registry-String immer Null

Ein Thema von NooL · begonnen am 15. Aug 2010 · letzter Beitrag vom 15. Aug 2010
Antwort Antwort
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#1

POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 11:03
Hallo,

benötige mal Eure Hilfe.

Versuche mit Pos(SubStr,SuchString)

den SubStr = '00HLFS-01G6U0'

im SuchString = 'USBSTOR\Disk&Ven_WDC_WD30&Prod_00HLFS-01G6U0&Rev_4V01\D57860C59536&0'

zu finden.

Den SubStr bekomme ich über eine Funktion geliefert und ist ein Teil eines Festplatten-Namens
und wird in einem normalen String gespeichert.

Der SuchString wird aus der Registry ausgelesen und auch in einen normalen String gespeichert.

Jedoch liefert Pos immer 0 und müßte eigentlich 32 o.ä. liefern!

Kann mir das momentan absolut nicht erklären.
Hat jemand einen Tip ??????
Danke im Voraus !!!
Nool
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#2

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 11:06
Liefert bei mir sauber 32 zurück. Zeig mal dein Sourcecode
Lars
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 11:26
Jupp, wo der String herkommt ist egal.

Also bist du dir ganz sicher, daß die gewünschten Strings auch wirklich so aussehn, wenn sie an Pos übergeben werden?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#4

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 11:53
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.
Nool

Geändert von NooL (15. Aug 2010 um 12:17 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#5

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 12:09
Habe mal in der Zeit das ausprobiert:
Pos('00HLFS-01G6U0','USBSTOR\Disk&Ven_WDC_WD30&Prod_00HLFS-01G6U0&Rev_4V01\D57860C59536&0'); Da meldet POS korrekt 32 zurück.

Auch wenn ich es direkt so angebe:

Delphi-Quellcode:
  DrvName:='00HLFS-01G6U0';
  S:='USBSTOR\Disk&Ven_WDC_WD30&Prod_00HLFS-01G6U0&Rev_4V01\D57860C59536&0';
  Pos(DrvName,S);
Sorry hatte falsche Variable verwendet -> meldet POS auch 32 !

Sobald aber einer der Variablen der Wert per Funktion übergeben wird, meldet Pos 0 !
Nool

Geändert von NooL (15. Aug 2010 um 13:26 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
NooL

Registriert seit: 26. Okt 2008
Ort: Dreiländereck
15 Beiträge
 
Delphi 7 Professional
 
#6

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 13:47
Manchmal ist man einfach blind.

Habe in der ListBOX und im Label nicht gesehen, dass dem Wert
DrvName noch Leerzeichen angehängt wurden.

Die Funktion TrimRight(DrvNum) hat nun das Problem gelöst.

Sorry und Gruß !
Nool
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 14:08
Das nächste Mal einfach im Debugger nachsehn.
Selbst D5 sollte da schon was bieten.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 17:31
Moin NooL,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Ausser eventuell vorhandenen Leer-/Steuerzeichen, kann Dir bei Pos auch die Gross-/Kleinschreibung einen Strich durch die Rechnung machen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

AW: POS liefert bei Registry-String immer Null

  Alt 15. Aug 2010, 22:12
Wenn alle schon nette Tipps am hinterherwerfen sind: Hier mal meiner:

Wenn es dir nur darum geht ob der Suchtext im String enthalten ist (ohne Groß/Kleinschreibung) würde ich Delphi-Referenz durchsuchenAnsiContainsText oder (mit Groß/Kleinschreibung) Delphi-Referenz durchsuchenAnsoContainsStr vorschlagen.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  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 08:54 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