StringFromGUID2( ... )
-
Hi Leute,
Gibt es die Funktion StringFromGUID2 auch anders herum (C)?
Also GUIDFromString oder so?Habe bisher nichts gefunden...
Ich habe ein GUID im String fomrat und will die in eine GUID konvertieren...
-
schau mal hier
http://www.c-plusplus.net/forum/viewtopic.php?t=59778
-
habe ich schon gelesen...
das Problem bei mir ist genau gegensätzlich... Ich habe die GUID nur als String (xml File)....
-
nun gut...
Wenn keiner eine passende Funktion kennt, muß es wohl auf die harte Tour sein.
Wen es interessiert, oder falls jemand eine bessere Idee hat, hier der Code:GUID guid; CString guidString = (const char*)curNode->children->content; CString tmp; int currPos = 0; int counter = 0; while((tmp = guidString.Tokenize("-", currPos)) != "") { char *rest; int num = 0; counter++; if(counter == 1) tmp.Delete(0); if(counter < 4) { tmp.Insert(0, "0x"); num = strtol(tmp.GetBuffer(), &rest, 16); } switch(counter) { case 1: { guid.Data1 = num; } break; case 2: { guid.Data2 = num; } break; case 3: { guid.Data3 = num; } break; case 4: { CString two = tmp.Left(2); two.Insert(0, "0x"); guid.Data4[0] = (BYTE)strtol(two.GetBuffer(), &rest, 16); two = tmp.Right(2); two.Insert(0, "0x"); guid.Data4[1] = (BYTE)strtol(two.GetBuffer(), &rest, 16); } break; case 5: { CString two = tmp.Left(2); int arrCounter = 2; while(tmp.Delete(0, 2) > 0) { two.Insert(0, "0x"); guid.Data4[arrCounter] = (BYTE)strtol(two.GetBuffer(), &rest, 16); arrCounter++; two = tmp.Left(2); } } break; } }
-
achso der String sieht natürlich so aus:
{E038C148-69C7-41f1-AD90-06156A790120}
-