oOXTCOo - Mi 15.07.09 14:46
Titel: wie rufe ich folgende Prozedur auf? bitte um hilfe!
hallo!
ich brauche bitte kurz hilfe, ich versuche seit einiger zeit nun die folgene prozedur aufzurufen. ich versuche diese in ein memo darzustellen, doch es kommen immer nur wilde zeichen dabei raus.
diese funktion soll alle com ports + namen auslesen können ohne der jedi komponente (hab die jedi auch schonb getestet, doch meine modem ports werden damit nicht anzeigt, darum setzte ich meine hoffnung nun in diesem code den ich gefunden habe).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| function GetComNames: TStrings; var KeyNames1,KeyNames2,KeyNames3: TStrings; Res: TStringList; i,ii,iii: integer; s,Key0: string; begin KeyNames1 := TStringList.Create; KeyNames2 := TStringList.Create; KeyNames3 := TStringList.Create; Key0 := '\SYSTEM\CurrentControlSet\Enum\'; Res := TStringList.Create; with TRegistry.Create do begin try RootKey := HKEY_LOCAL_MACHINE; if OpenKeyReadOnly(Key0) then begin GetKeyNames(KeyNames1); for i:=0 to KeyNames1.Count-1 do begin OpenKeyReadOnly(Key0+KeyNames1[i]+'\'); GetKeyNames(KeyNames2); for ii:=0 to KeyNames2.Count-1 do begin OpenKeyReadOnly(Key0+KeyNames1[i]+'\'+KeyNames2[ii]+'\'); GetKeyNames(KeyNames3); for iii:=0 to KeyNames3.Count-1 do begin OpenKeyReadOnly(Key0+KeyNames1[i]+'\'+KeyNames2[ii]+'\'+KeyNames3[iii]+'\'); if KeyExists('Device Parameters') then begin s := ReadString('FriendlyName'); OpenKeyReadOnly(Key0+KeyNames1[i]+'\'+KeyNames2[ii]+'\'+KeyNames3[iii]+'\Device Parameters\'); if ValueExists('PortName') then begin s := ReadString('PortName')+'|'+s; if Pos('COM',s)=1 then Res.Add(s+'|'+KeyNames1[i]); end; end; end; end; end; end; finally CloseKey; Free; end; end; Res.Sort; Result := Res; end; |
grüße
hari
ps:
wenn ich eine schleife mache und es als in einem array of char lade und dann ins memo schreibe bekomme ich so einen schrott: XüŒ´ŒP D<\8üp@d4¬ˆØÄô(¼äp„tü04(ØŒx(\ðd`Ü`8LP”,üÔœÐèPd´ T4ÐXàøDèh¸¬Püt ìxÔˆ(\ì¼ Ä@h4
èH4øDL¬€¤0¤PHtt
alles klar, ist schon wieder meine blödheit warums nicht geklappt hat:
COM11|JAF Port (COM11)|FTDIBUS
COM12|HUAWEI Mobile Connect - 3G Modem|USB
COM13|HUAWEI Mobile Connect - 3G PC UI Interface (COM13)|USB
COM14|HUAWEI Mobile Connect - 3G Modem #2|USB
COM15|HUAWEI Mobile Connect - 3G PC UI Interface (COM15)|USB
COM16|HUAWEI Mobile Connect - 3G Modem #3|USB
COM17|HUAWEI Mobile Connect - 3G PC UI Interface (COM17)|USB
COM18|JAF Port (COM18)|FTDIBUS
COM19|HUAWEI Mobile Connect - 3G Modem #4|USB
COM20|HUAWEI Mobile Connect - 3G PC UI Interface (COM20)|USB
COM3|HDAUDIO Soft Data Fax Modem with SmartCP|HDAUDIO
COM4|ELTIMA Virtual Serial Port (COM4)|VSBUS
COM4|JAF Port (COM4)|FTDIBUS
COM5|JAF Port (COM5)|FTDIBUS
COM6|JAF Port (COM6)|FTDIBUS
COM7|RIM Virtual Serial Port v2 (COM7)|Root
COM8|RIM Virtual Serial Port v2 (COM8)|Root
COM9|JAF Port (COM9)|FTDIBUS
jetzt bräuchte ich avber doch noch hilfe...
da werden leider alle installierten ports angezeigt, ich will aber nur die haben die auch wirklich gerade verbunden sind. hat jemand eine gute idee?
wie mache ich am besten folgendes: ich lese alle vorhandenen comports mit enumcomport aus, dannach lese ich mit der obigen prozedur alle installierten comports aus, und verlgleiche die liste, was nicht bei enumcomport drinn ist wird rausgeschmissen...
wie stelle ich das nun am besten an?
Reinhard Kern - Mi 15.07.09 16:01
oOXTCOo hat folgendes geschrieben : |
hallo!
jetzt bräuchte ich avber doch noch hilfe...
da werden leider alle installierten ports angezeigt, ich will aber nur die haben die auch wirklich gerade verbunden sind. hat jemand eine gute idee?
... |
Hallo,
nein, woher soll denn ein Comport wissen, ob am anderen Ende was dranhängt? Du könntest Statusleitungen abfragen, aber die werden häufig nicht verwendet, z.B. bei Xon/Xoff-Protokoll. Einfach was senden geht auch nicht, du kannst die Konsequenzen nicht abschätzen. Wenn du am Telefon nur Rauschen hörst, weisst du ja auch nicht, ob da jemand ist, und wenn du rufst "ist da wer" und keiner antwortet, beweist das andrerseits nicht, dass niemand da ist.
Gruss Reinhard