Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ordner über sockets versenden (https://www.delphipraxis.net/139705-ordner-ueber-sockets-versenden.html)

Master_Jochen 3. Sep 2009 13:13


Ordner über sockets versenden
 
Hallo Leute,
Ich bin noch immer ein blutiger Anfänger und entschuldife mich schonmal im voraus für doofe Fragen

Zu Meinem Problem....

Ich möchte gerne einen ganzen ordner über sockets versenden, und nein ich möchte kein iny verwenden da ich bei der installation von indy schon immer nen anfall bekomme.

Ich habe bis jetzt nur ne grundstrucktur aber diese ist so chaotisch gecoded das ich mich schäme den code zu posten :-)

Meine ansetze zum ordnerversenden waren folgende ersten ich gebe den ordner an und lasse ihn durchsuchen und merke mir bei jedem treffer den pfad sende diese angaben an den server der dann diesen pfad im clientordner des servers ablegt .... ok dachte das könnte gehen aber alle funktionen zum durchsuchen von ordnern die ich gefunden habe hören auf weiter zu suchen sobald in einem unterordner keine datei liegt, aber wenn 2 ebenen darunter noch ordner existieren muss ich die ja auch kennen da ich die ordnerstruktur inklusive dateien 1 zu 1 nachbilden will.

Ja 2ter ansatz ich lasse den client den folder zipen und den server entzippen .....

Naja vieleicht habt ihr auch ne idee die einfacher wäre....

Schonmal danke fürs lesen und hoffe ihr könnt mir helfen

mfg Jochen

XXcD 3. Sep 2009 13:32

Re: Ordner über sockets versenden
 
Vielleicht versuchst du es doch mit Indy. hier in der DP gibt es ne super Anleitung zur Installation von Indy9.
Ab Delphi2009 ist Indy10 sogar schon direkt Installiert.

Und es gibt bestimmt eine Funktion die alle Dateien in einem Ordner auflistet.
Ich würde diese Daten in eine Stringlist packen und danach den Server Datei für Datei senden lassen.

Master_Jochen 3. Sep 2009 20:43

Re: Ordner über sockets versenden
 
Mhh ja die anleitung sieht echt klasse aus bin leider nie darauf gestoßen :wall:
aber ich bin mit meinem project doch schon etwas weiter mitlerweile sprich chat funktioniert und ich kann command senden und der server führt sie aus

Für das ordner problem muss ich vieleicht nen neuen treat erstellen ....
wie gesagt ich kenne funktionen die du meinst aber ich muss ja auch die leeren ordner auf dem server erstellen da sonst gewisse anwendungen nicht laufen wenn ihnen ein ordner fehlt oder sich im unter ordner von dem ordner in dem sich keine datei befand, noch eine datei befindet.....

ok klingt jetzt etwas chaotisch .... so wie mein code :oops: naja will ja im prinzip nur nen ganzen ordner versenden suche gute ansetze dafür.... Und ja stringlist wäre auch meine idee gewesen

Danke für deine anregungen XXcD.

mjustin 4. Sep 2009 05:52

Re: Ordner über sockets versenden
 
Zitat:

Zitat von Master_Jochen
Für das ordner problem muss ich vieleicht nen neuen treat erstellen ....
wie gesagt ich kenne funktionen die du meinst aber ich muss ja auch die leeren ordner auf dem server erstellen da sonst gewisse anwendungen nicht laufen wenn ihnen ein ordner fehlt oder sich im unter ordner von dem ordner in dem sich keine datei befand, noch eine datei befindet.....

Eventuell ist der Code aus der BTVisualFTP Komponente als Hilfe brauchbar - damit werden auch Ordnerstrukturen übertragen.

http://cc.embarcadero.com/Item/24525

http://sourceforge.net/projects/btvisualftp/

Viele Grüße,
Michael

Master_Jochen 4. Sep 2009 10:13

Re: Ordner über sockets versenden
 
Hey dakne mjustin,

Ich werde mir das gleich mal ansehen wenn ich ne funktion extrahiert habe um alle ordner anzuzeigen werde ich dir auch hier posten....

PS: Denn was ich hasse sind threads die enden mit "Habe ne andere lösung gefunden"... und diese dann aber nicht gepostet wird :firejump:

Master_Jochen 4. Sep 2009 11:08

Re: Ordner über sockets versenden
 
So ein problem weniger vieleicht hilft diese lösung ja auch jemand anderem weiter

Delphi-Quellcode:
procedure TForm1.ListDirectory(path:string);
var
  SR: TSearchRec;
    i:integer;
begin
    i:=length(path);
    if(path[i]<>'\')then path:=path + '\';


    if FindFirst(path + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if ((faDirectory) = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
           begin;
             Listbox1.Items.Add(path + SR.Name);
             ListDirectory(path + SR.Name + '\');
           end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
end;
Die zeile
Delphi-Quellcode:
    i:=length(path);
    if(path[i]<>'\')then path:=path + '\';
habe ich eingebaut für niedrige delphi versionen unter 4

Ja die procedure zeigt alle verzeichnisse im übergebenen pfad auch leere und alle dateien in listbox 1 an.

Master_Jochen 4. Sep 2009 20:00

Re: Ordner über sockets versenden
 
Oh Man habe den code versucht anzupassen aber bekomme immer wieder nen access violation error

Delphi-Quellcode:
procedure TForm1.ListDirectory(path:string;stringlist: Tstrings);
var
  SR: TSearchRec;
    i:integer;
begin

    i:=length(path);
    if(path[i]<>'\')then path:=path + '\';
 
    if FindFirst(path + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if ((faDirectory) = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
           begin;
             stringlist.Add(path + SR.Name);
             ListDirectory(path + SR.Name + '\',stringlist);
           end;
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
end;
wenn ich ihn hiermit aufrufe

Delphi-Quellcode:
ListDirectory(FolderPath,AllFolders);
kann das daran liegen das man nicht prozeduren übergreifen variabeln verararbeiten kann und mein code dies versuch? des weiteren wenn ich dieser pocedure de untersten folder gebe bekomme ich kein error...
weiß einer rat von euch profis?

Am liebste hätte ich das ganze mit einer funktion gelöst aber da die sich ja immer wieder selber aufruft weiß ich nicht wie das mit dem result gehen soll... Fragen über fragen


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz