lokale- oder angebundene netzwerkpartition
lokale- oder angebundene netzwerkpartition
hallo,
ich arbeite grad an einer projektdatei, die den akt. zustand des programms abspeichern soll. ein "zustand" wäre, welche datei bearbeitet wurde.
diese projektdatei wird dann an andere user verschickt und wenn sie geladen ist, soll der abs. gleiche zustand des programms zu sehen sein wie bei dem ersteller der projektdatei zur zeit des erstellens.
wenn die datei lokal vorhanden ist, darf keine projektdatei erstellt werden, da andere user auf anderen clients arbeiten. desweiteren kann bei dem einen ein netzwerklaufwerk unter H: und bei dem anderen unter S: gemountet sein. daher würd ich in die projektdatei abspeichern wollen:
absoluter_pfad_zur_partition\ordner1\meinedatei.txt
anstatt
G:\ordner1\meinedatei.txt
kann qt den abs. pfad einer partition ermitteln und wenn ja wie?
ich arbeite grad an einer projektdatei, die den akt. zustand des programms abspeichern soll. ein "zustand" wäre, welche datei bearbeitet wurde.
diese projektdatei wird dann an andere user verschickt und wenn sie geladen ist, soll der abs. gleiche zustand des programms zu sehen sein wie bei dem ersteller der projektdatei zur zeit des erstellens.
wenn die datei lokal vorhanden ist, darf keine projektdatei erstellt werden, da andere user auf anderen clients arbeiten. desweiteren kann bei dem einen ein netzwerklaufwerk unter H: und bei dem anderen unter S: gemountet sein. daher würd ich in die projektdatei abspeichern wollen:
absoluter_pfad_zur_partition\ordner1\meinedatei.txt
anstatt
G:\ordner1\meinedatei.txt
kann qt den abs. pfad einer partition ermitteln und wenn ja wie?
Code: Alles auswählen
QDir dir("Y:");
QString path = dir.absoluteFilePath("Y:/data_etc.tgz");
//liefert leider nurY:/data_etc.tgz
hab die lösung zumindest unter windows gefunden. die msdn-funktion heisst
das einzige, was anfangs probleme gemacht hat ist die erfolgreiche umwandlung von qstring -> std::string -> LPCTSTR und später zurück. am sonsten liefert die funktion für ein tatsächlich gemountetes laufwerk (in form von string , z.b. "Y:\") den absoluten pfad, in form von \\server\home\ und dann müsste man evtl. server nach ipadresse umwandeln. wenn ein laufwerkbuchstabe übergeben ist, der nicht zu einem gemounteten laufwerk gehört, dann wird nach dem aufruf ein leerer string im lpBuffer stehen.
Code: Alles auswählen
DWORD WNetGetUniversalName(
__in LPCTSTR lpLocalPath,
__in DWORD dwInfoLevel,
__out LPVOID lpBuffer,
__inout LPDWORD lpBufferSize
);