lokale- oder angebundene netzwerkpartition

Alles rund um die Programmierung mit Qt
Antworten
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

lokale- oder angebundene netzwerkpartition

Beitrag von samsamsam »

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?
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

Code: Alles auswählen

QDir dir("Y:");
QString path = dir.absoluteFilePath("Y:/data_etc.tgz");
//liefert leider nurY:/data_etc.tgz
y: ist aber ein netzwerklaufwerk. it absoluteFilePath bekomm ich aber keinen absoluten pfad, unter dem das netzwerklaufwerk gemountet wurde. hat jemand eine idee?
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

welche ausgabe willst du denn erreichen?

so etwas?

\\server01\home".
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

in etwa so:

\\192.168.1.201\home
anno1988
Beiträge: 280
Registriert: 23. Januar 2009 20:49

Beitrag von anno1988 »

ich vermute mal das geht nur per windows api. aber ohne gewähr
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

schade. ich dachte qt könnte das. wär schön gewesen, da das programm, das ich entwickle plattformübergreifend laufen soll..
samsamsam
Beiträge: 43
Registriert: 9. Juni 2009 16:22
Wohnort: Dortmund

Beitrag von samsamsam »

hab die lösung zumindest unter windows gefunden. die msdn-funktion heisst

Code: Alles auswählen

DWORD WNetGetUniversalName(
  __in     LPCTSTR lpLocalPath,
  __in     DWORD dwInfoLevel,
  __out    LPVOID lpBuffer,
  __inout  LPDWORD lpBufferSize
);
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.
Antworten