FindFirst Netzwerk
-
Hi,
ich brauche eine funktion, die mir den vollständigen Ordnernamen zurückliefert, welcher im Netwerk freigegeben ist.
Beispiel:
\\rechner\bla\bla\Masterstand_2008-08-10\...
ich uebergebe \\rechner\bla\bla\Masterstand* und will Masterstand_10-08-2008 zurückbekommen (da sich das Datum unregelmässig änder). Es ist auch immer nur ein ordner mit dem Namen "Masterstand_XXXX" vorhanden.void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString aTemp; aTemp = Edit1->Text; GetFolderName(aTemp); Edit1->Text = aTemp; } //--------------------------------------------------------------------------- bool __fastcall TForm1::GetFolderName(AnsiString &aName){ TSearchRec sr; int iAttributes = 0; iAttributes |= faDirectory; if (FindFirst(aName, iAttributes, sr) == 0) { do { if ((sr.Attr & iAttributes) == sr.Attr){aName = sr.Name;} } while (FindNext(sr) == 0); FindClose(sr); } }
lokal funtioniertdie Funktion problemlos. C:\w* eingegeben und ich bekomme windows zurück. nur im netzwerk funktionierts nicht .... mehr ?!
Weiss jemand woran das liegt ?
-
Also evtl. könnte es funktionieren, wenn du dir ein Netzlaufwerk anlegst.
Dazu:
-> Windows Explorer
-> MainMenue/ Extras / Netzlaufwerk verbindenDort kannst du einen Laufwerksbuchstaben auswählen und die entsprechende Postion im Netzwerk angeben. Du erhälst ein fiktives Laufwerk. Vielleicht könnte dann dein Algorithmus funktionieren. (Anmerkung: ich verwende W2k - kein Plan wie das bei XP oder Vista aussieht)
-
danke für den Vorschlag, nur will ich ohne Netzlaufwerk arbeiten, damit die Software problemlos von jedem Rechner aus gestartet werden kann. es funktioniert auch bereits alles soweit, nur finde ich keine Methode um den Ordnernamen auszulesen...
-
misst^^
auf einer lokalen freigabe (\\meinrechner\...) funktionierts. und es hatte auch schon auf ner freigabe von einem einem anderen Rechner funktioniert. Muss irgendwie am Netzwerk liegen...
-
Kann es sein, dass der Rechnername nicht aufgelöst werden kann? Hast du es schonmal mit der Angabe der IP Adresse versucht?
Gruß charlie
-
Kannst du nicht irgendwie den Fehlercode rauskriegen? Kenne mich mit dem Builder nicht aus, mit reiner WinAPI setzt FindFirstFile ja den Fehlercode, den du mit GetLastError auslesen kannst.
-
von FindFirst sowie GetLastError() bekomm ich 53 zurück -> "The network path was not found."
Es handelt sich hierbei um ein "Firmennetzwerk". ueber ip hatte ichs auch schon ausprobiert.
wenn ichs auf zwei rechner in einem "normalen" netzwerk probier, dann funktionierts. Nur nicht im Firmennetz. \\rechner.domaene\... und so hab ich auch schon durch. Komisch, dass FindFirst hier nicht funktioniert?! Werde mich wohl mal mit der IT in verbindung setzen müssen (wobei ich mir da nicht viel erhoff^^)
-
Möglicherweise musst du dich vor der Verbindungsaufnahme nochmal authentfizieren (WNetAddConnection2), siehe z.B. http://www.delphipraxis.net/topic93614.html
-
hatte einfach mal alles mögliche mit WNetAddConnection2 durchgespielt.
jetzt hab ich die auswahl zwischen
53: ERROR_BAD_NETPATH
2202: ERROR_BAD_USERNAME
1204: ERROR_BAD_PROVIDERwerde am montag mal jmd fragen, der sich hoffentlich damit auskennt.
vermute mal des liegt irgendwie an der domain.
trotzdem danke und schoenes wochenende