hCommFile = *((LPHANDLE)((LPBYTE)lpVarString + lpVarString -> dwStringOffset)); Hej > hCommFile = *((LPHANDLE)((LPBYTE)lpVarString + lpVarString -> Jag har hittat ett exempel i VB och där man deklarerar varstring så här: Hej mer info... så här ser det ut i sitt sammanhang.... > Berätta hur går det på lokförar köret. > Men hur ska jag hitta värdet till hCommFile i VB ???Är det någon som kan förklara denna C-kod?
Jag håller på med TAPI i VB men många exempel är i C, så därför denna fråga: Är det någon som kan förkalara denna rad på vanlig svenska....
MVH LeifSv: Är det någon som kan förklara denna C-kod?
Jag börjar .
hCommFile = *((LPHANDLE)((LPBYTE)lpVarString + lpVarString -> dwStringOffset));
Jag håller på med TAPI i VB men många exempel är i C,
så därför denna fråga: Är det någon som kan
LpHandle betyder longPointer till handtag lpVarString
betyder pekare till (pointer) till den String du skickar
dwStringOffset betyder DoubleWordOffset dvs 32 bitar 4 byte
Lp och Dw är i princip samma sak Dvs det Vi i VB kallar Long.
SvenSv: Är det någon som kan förklara denna C-kod?
> dwStringOffset));
Vi får börja inifrån och ut, tror jag...
I princip kan man säga att objektet lpVarString har en medlem som heter dwStringOffset. Innehållet i denna medlem är ett tal. Detta tal adderas till minnesadressen för lpVarString. Den nya minnesadressen som uppstår görs först om till en byte och sedan till ett handle. Slutligen lagras värdet, som finns på den minnesplatsen, i hCommFile.
Vad som sker är alltså att det som finns så många bytes fram i lpVarString som dwStringOffset anger, lagras i hCommFile.
C är trevligt i den bemärkelsen att man kan göra vad 17 som helst :-)Sv: Är det någon som kan förklara denna C-kod?
Type varString
dwTotalSize As Long
dwNeededSize As Long
dwUsedSize As Long
dwStringFormat As Long
dwStringSize As Long
dwStringOffset As Long
bBytes(2000) As Byte 'HACK Added to TAPI structure for lineGetID data.
End Type
Enl Microsoft ser den ut så här i C
typedef struct varstring_tag {
DWORD dwTotalSize;
DWORD dwNeededSize;
DWORD dwUsedSize;
DWORD dwStringFormat;
DWORD dwStringSize;
DWORD dwStringOffset;
} VARSTRING, FAR *LPVARSTRING;
hCommFile ska efter en funktion som heter LineGetID innehålla adressen till Comporten d.v.s 0x2F8 eller 0x3F8 detta försöker jag då leta fram i bBytes men där hittar jag inte den adressen.
MVH
LeifSv: Är det någon som kan förklara denna C-kod?
Thomas Thy...
Berätta hur går det på lokförar köret.Törs man åka med dig :-) ?
SvenSv: Är det någon som kan förklara denna C-kod?
Jag provar med programmet TAPI browser och får följande utskrift:
Calling lineGetID
hLine=x0
dwAddressID=x0
hCall=x10299
dwSelect=x4
lpDeviceID=x283d98
lpszDeviceClass=x6f554
lineGetID returned SUCCESS
VARSTRING
dwTotalSize=x1000
dwNeededSize=x3c
dwUsedSize=x3c
dwStringFormat=x4, BINARY
dwStringSize=x24
dwStringOffset=x18
00000154 65776f50 74694272 6b383220 T...PowerBit 28k
33332038 5620366b 6563696f 54584520 8 33k6 Voice EXT
00322320 xxxxxxxx xxxxxxxx xxxxxxxx #2.
Men här kan jag inte heller se vart portadressen ligger.....
MVH
LeifSv: Är det någon som kan förklara denna C-kod?
lineGetID(hLine, 0L, NULL, LINECALLSELECT_LINE, lpVarString,"comm/datamodem");
hCommFile = *((LPHANDLE)((LPBYTE)lpVarString + lpVarString -> dwStringOffset));
Men hur ska jag hitta värdet till hCommFile i VB ???
MVH
Leif EdhSv: Är det någon som kan förklara denna C-kod?
Jag är klar med grundutbildningen och har fått anställning hos SJ i Västerås. Dock börjar jag inte där förrän 1 september, för de måste ge mig tilläggsutbildning på de fordon och sträckor som de kör, och det har de inte möjlighet till förrän till hösten på grund av semester...
Så, fram till dess har jag skaffat sommarjobb. Hos Banverket. Står vid sidan av spåret i orange kostym och vinkar till alla tåg som far förbi :-)
Nåja, nästan i alla fall. Min befattning är tillsyningsman och jag ansvarar för säkerheten på ett norskt lok med en maskin som är i Sverige och arbetar. Fordonet kallas spårstabilisator och körs efter att man har bytt slipers på en sträcka innan den ordinarie trafiken släpps på. Anledningen till att jag är med är att föraren är norsk och därför inte har behörighet att köra i Sverige.Sv: Är det någon som kan förklara denna C-kod?
Jag kan ju inte VB, men...
Du får kolla värdet på dwStringOffset och förflytta dig så många steg framåt i lpVarString, och när du kommit dit så sparar du talet som finns där, vilket ska vara hCommFile.