[DELPHI 7] netwerk pad naar lokaal pad

Pagina: 1
Acties:
  • 291 views sinds 30-01-2008
  • Reageer

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
Ik zit met het volgende probleem:

Ik ben over het netwerk een tekstbestand aan het bewerken.
Hierin komen paden te staan die naar andere bestanden verwijzen.
Nu zit ik met het volgende probleem:

Een programma leest een bestand in die de paden van een x aantal bestanden bevat.
Wanneer ik vanaf mijn pc de paden ga toevoegen door bestanden via een dialoog te selecteren komt er
"\\fana\d\hosting\file.exe"
te staan.
Dit is netwerkpad, maar ik wil eigelijk dat er een lokaal pad van die pc naar het bestand komt te staan.
"d:\hosting\file.exe"

Is er een manier in delphi om het lokale pad van een bestand op pc op het netwerk te krijgen.

Dus in de praktijk:
ik selecteer het bestand "\\fana\d\hosting\file.exe". dit moet opgeslagen worden als "d:\hosting\file.exe"

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-08 21:00

Creepy

Tactical Espionage Splatterer

Je wilt een pad in een text bestand aangepast hebben?
Je kan toch gewoon \\fana\d\ vervangen door d:\ ?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 10:45

mulder

ik spuug op het trottoir

Volgens mij zijn daar bepaalde API's voor, zoek daar eens op

oogjes open, snaveltjes dicht


  • Speed24
  • Registratie: Augustus 1999
  • Niet online
ExtractFileDir
ExtractFilePath
ExtractFileName

En ga zo maar door...

met die functies moet het zeker lukken.

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
Creepy schreef op 17 juli 2003 @ 14:13:
Je wilt een pad in een text bestand aangepast hebben?
Je kan toch gewoon \\fana\d\ vervangen door d:\ ?
Dat kan opzich wel, maar het staat niet vast dat \\fana\d\ d:\ is
Het moet op iedere pc in het netwerk toepasbaar zijn.

\\fana\temp\ staat namelijk voor e:\webtools\temp\

dus dat werkt helaas niet

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
speed24 schreef op 17 July 2003 @ 14:26:
ExtractFileDir
ExtractFilePath
ExtractFileName

En ga zo maar door...

met die functies moet het zeker lukken.
heb ik allemaal al geprobeerd.
Met die functies kan ik alleen dingen met het huidige pad doen.

Dus wanneer ik het bestand selecteer krijg ik \\fana\d\files.exe met dit pad kan ik idd ExtractFileDir de directory krijgen resultaat : \\fana\d
ExtractFilePath Resultaat : d
de extentie resultaat : .exe

eerst moet ik het pad omzetten naar een lokaal pad, en dan heb ik pas wat aan die functies

  • ajhaverkamp
  • Registratie: November 2001
  • Laatst online: 20-08 22:36

ajhaverkamp

gewoon Arjan

This footer is intentionally left blank


  • Speed24
  • Registratie: Augustus 1999
  • Niet online
De situatie die jij nu schetst is nogal onduidelijk.
Zijn er regels die gelden?

Ik zou dus eerst even vaststellen welke netwerkdir's naar welke hd-dir's omgezet moeten worden.
Zonder een standaard (set van) regel(s) is het nogal moeilijk te programmeren.

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Waarom wil jij wat je wil - oftewel, leg eens uit wat je hiermee denkt te bereiken ?

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
speed24 schreef op 17 July 2003 @ 14:37:
De situatie die jij nu schetst is nogal onduidelijk.
Zijn er regels die gelden?

Ik zou dus eerst even vaststellen welke netwerkdir's naar welke hd-dir's omgezet moeten worden.
Zonder een standaard (set van) regel(s) is het nogal moeilijk te programmeren.
Met een applicatie wordt er op een remote pc op het netwerk een tekstbestand bewerkt. De paden die in dit bestand komen te staan moeten zo min mogelijk netwerkpaden bevatten. Wanneer ik op de fana werk moeten alle bestanden die van de \\fana\ afkomen omgerekend worden naar het lokale pad op die pc.

Wanneer ik op de \\server1\ werk en ik voeg bestand \\fana\d\files.exe toe kan ik dus geen lokaal pad invoeren. het bestand \\server1\temp\fies.exe moet dus worden omgezet naar c:\temp\files.exe

er moet dus een manier zijn om niet het netwerk pad, maar het pad die het bestand op die pc inneemt.

  • Speed24
  • Registratie: Augustus 1999
  • Niet online
Dus bij \\fana moet de driveletter gepakt worden die na \\fana komt?
Bij andere servers moet gewoon de eerste dir vervangen worden door een driveletter?

Die twee regels zijn er?
Dat valt toch wel te programmeren?

Met meerdere aanroepen van ExtractFileDir kun je stapsgewijs alle dirnamen uit een path halen ... vanzelf kom je dan of \\fana tegen of niet ( en dan vervang je de 'root' door een driveletter).

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
speed24 schreef op 17 July 2003 @ 14:49:
Dus bij \\fana moet de driveletter gepakt worden die na \\fana komt?
Bij andere servers moet gewoon de eerste dir vervangen worden door een driveletter?

Die twee regels zijn er?
Dat valt toch wel te programmeren?

Met meerdere aanroepen van ExtractFileDir kun je stapsgewijs alle dirnamen uit een path halen ... vanzelf kom je dan of \\fana tegen of niet ( en dan vervang je de 'root' door een driveletter).
Helaas zijn het niet die twee regels.
Een gedeelde map over het netwerk hoeft niet per defenitie een schrijf te zijn.
men kan ook de directorty \\server1\temp gedeeld hebben die lokaal C:\Documents and Settings\All Users\Desktop\temp is.

het is dus de bedoeling het pad op de lokale pc te verkrijgen

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 17:51

Tomatoman

Fulltime prutser

Zo'n ding dat begint met \\ heet een UNC file name. Zoek daar maar eens op in de helpfiles.

[ Voor 5% gewijzigd door Tomatoman op 17-07-2003 16:15 ]

Een goede grap mag vrienden kosten.


  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
tomatoman schreef op 17 July 2003 @ 16:14:
Zo'n ding dat begint met \\ heet een UNC file name. Zoek daar maar eens op in de helpfiles.
kom ik als zo'n newbie over dat je veronderstelt dat ik niet weet dat het een unc pad heet? Ik zal voortaan me best doen wat professioneler over te komen

Verwijderd

gebruik de NetShareEnum Api om alle shares te enumeraten van \\fana
dan krijg je de namen terug van de share en de logise path

zoals d = d:\ in \\fana\d
dan kun je alle directory na \\fana\d achter je verkregen path plakken dus d:\

zie hier voor meerr info
http://msdn.microsoft.com.../netmgmt/netshareenum.asp

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 17:51

Tomatoman

Fulltime prutser

Geodan schreef op 17 July 2003 @ 16:43:
[...]
kom ik als zo'n newbie over dat je veronderstelt dat ik niet weet dat het een unc pad heet?
Geodan, aangezien jij zo'n kanjer bent dat je het antwoord allang zelf had gevonden, hoef jij niet verder te lezen. Voor diegenen de wel geïnteresseerd zijn is hier de header translation van de functie ScLocalPathFromUNC.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
interface

type
  SCODE = Longint;

function ScLocalPathFromUNC(lpszUNC: PChar; out lpszLocal: PChar; 
  cchLocal: Longint): SCODE; stdcall;

implementation

const
  mapi32 = 'mapi32.dll';

function ScLocalPathFromUNC; external mapi32 name 'ScLocalPathFromUNC';
The ScLocalPathFromUNC function locates a local path counterpart to the given universal naming convention (UNC) path.

szUNC
[in] A path in the format \[server]\[share]\[path] of a file or directory.

szLocal
[out] A path in the format [drive:]\[path] of the same file or directory as for the szUNC parameter.

cchLocal
[in] Size of the buffer for the output string.

Een goede grap mag vrienden kosten.


Verwijderd

Netwerk pad naar lokaale drive is dat niet makkelijker?

code:
1
net use x: \\server\sharename

dat uitvoeren via Shell of Exec of net hoe Delphi dat doet.
Of wil je echt dat \\server\sharename b.v. naar c:\bla gezet wordt en niet naar d: of x:?

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
Wanneer ik de functie ScLocalPathFromUNC gebruik krijg ik helaas de foutmelding

The procedure entry point ScLocalPathFromUNC could not be located in the dynamic link library mapi32.dll.

misschien is het platform gebonden

  • Geodan
  • Registratie: Maart 2003
  • Laatst online: 20-06-2025
op de mdsn site staat helaas

The ScLocalPathFromUNC function locates a local path counterpart to the given universal naming convention (UNC) path.

Note This function may not be supported in future versions of MAPI.

Verwijderd

nu weet ik niet veel van delphi, maar m'n gezonde verstand zegt dat dat niet gaat. Want het lokale path van die ene gesharede dir is alleen op die netwerkpc gedefinieert. Je hebt dus een app nodig op die netwerk pc die je van een sharenaam een lokaal path teruggeeft. Die zou je dan moeten aanroepen ofzo

Of je moet lokaal ff een lijstje maken van sharenames vs local paths
Pagina: 1