Verzeichniss auf Server laden
-
Hallo ich versuche gerade mit der Indy Komponente ein eine Datei aus einem Ordner auf meinen Server zu laden der name des ordners heisst:
I:\\Dokumente und Einstellungen\\benutzer\\test.txt
Ich hab auch schon eine Funktion welche mir den Benutzername ausließt
diesen Speichere ich ja dann in der Variable user_name.Nur mein Problem ist wie krieg ich die Variable nicht in die Put Funktion.
[cs}
DWORD nSize;
char user_name[255];
nSize = sizeof( user_name );
GetUserName( user_name, &nSize );IdFTP1->Host="server";
IdFTP1->Username="username";
IdFTP1->Password="passwort";
IdFTP1->Passive=false; //ist auch Standard
IdFTP1->Port=21; //ist auch Standard
IdFTP1->TransferType=ftBinary;IdFTP1->Connect();
IdFTP1->Put("I:\\Dokumente und Einstellungen\"<<user_name"\\test.txt","/ordner.txt",false);
IdFTP1->Disconnect();
[/cs]
So hab ich es versucht aber dann bekomme ich folgende Fehlermeldungen vom Compiler.
Erzeugen
[C++ Fehler] Unit1.cpp(42): E2087 Unzulässige Zeigerverwendung
[C++ Fehler] Unit1.cpp(42): E2121 ) fehlt beim Funktionsaufruf
-
IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + user_name + "\\test.txt","/ordner.txt",false);
-
Laufwerk i: ist doch kein ftp-Server.
Schau mal unter Kopieren von Verzeichnissen.
-
I ist das Quellverzeichnis, dass die Datei enthält, die hochgeladen werden soll...
-
@1234 Laufwerk i:\ ist mein Computer
@Joe_M.
DWORD nSize; char user_name[255]; nSize = sizeof( user_name ); GetUserName( user_name, &nSize ); IdFTP1->Host="server"; IdFTP1->Username="username"; IdFTP1->Password="passwort"; IdFTP1->Passive=false; //ist auch Standard IdFTP1->Port=21; //ist auch Standard IdFTP1->TransferType=ftBinary; IdFTP1->Connect(); IdFTP1->Disconnect(); IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + user_name + "\\test.txt","/ordner.txt",false);
Wenn ich es so mache sagt er Unzulässige Zeigeradditon
-
dirty hack:
IdFTP1->Put(AnsiString("I:\\Dokumente und Einstellungen\\") + user_name + AnsiString("\\test.txt"),"/ordner.txt",false);
Besser wäre es, den String ordentlich zusammenzubauen.
-
Unzulässige Zeigeraddition sollte aber eigentlich nur bei dem Versuch kommen zwei Literale direkt zusammenzufügen...
Also irgendwas in der Richtung;
MeinString = "1234" + "5678";
Ich sehe gerade, dass user_name ein C-String ist. Warum verwendest Du keinen AnsiString?
Falls wittes Lösung nicht funktioniert:
IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + AnsiString(user_name) + "\\test.txt","/ordner.txt",false);
-
Thx beide Lösungen funktionieren :>
Aber kann man den auch ganze Verzeichnisse hochladen anstatt nur einzelne Datein ?
-
Hallo
Klar, du must nur alle Dateien des Verzeichnisses einzeln hochladden.
bis bald
akari
-
Also ich hatte mir das so gedacht:
IdFTP1->Put("I:\\Dokumente und Einstellungen\\" + user_name + "\\meinorder","/ordneraufserver",false);
So wollte ich das also das der alle Datein aus dem ordner "meinorder" auf dem server in dem ordner "ordneraufserver" aber das funktionierte nicht
-
Das war halt falsch gedacht.
Du musst, wie von akari gesagt, die Dateien einzeln hochladen, und dabei die erforderlichen Ordner und Unterordner nach Bedarf auf dem Server erzeugen.