Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datentyp (https://www.delphipraxis.net/51736-datentyp.html)

storm1988 17. Aug 2005 21:55


Datentyp
 
Hallo alle miteinander! :hi:
Ich möchte gern mit einem Programm einen bestimmten Ordner und deren Unterorder nach Dateien durchsuchen und diese Anschließend in einen Datentypen Speichern. Diesen möchte ich dann per IdTCPClient an den Server schicken.

Meine Frage ist jetzt mit welchen Datentypen ich das am besten realisiere, ohne das ich irgendwas auf die Festplatte speichern muss?? :gruebel:

MFG

SirThornberry 17. Aug 2005 22:43

Re: Datentyp
 
du könntest die dateien in einen memorystream packen und dann diesen stream verschicken. Was mir auch nicht ganz klar ist - willst du die ordnerstruktor verschicken oder den inhalt der dateien?

storm1988 18. Aug 2005 10:33

Re: Datentyp
 
Ich würde gern die Ordnerstruktur auslesen lassen und diese dann übertragen.
Wie mache ich das am besten, wenn ich die Daten in einen memorystream packe??

Hier ist mal mein Source Code, wo ich jedoch noch die Daten auf die Fesplatte gespeichert hab:


Delphi-Quellcode:
procedure FindFilesTree (aPath: String);
Var
  SearchRec: tSearchRec;
    Datei: TextFile;
    awithFiles :Boolean;
Begin

   if FileExists('C:\test.txt') = False then
   begin
        Rewrite(Datei,'C:\test.txt');
        CloseFile(Datei);
   end;

   aWithFiles := True;

  If aPath [Length (aPath)] <> '\' Then
    aPath := aPath + '\';

  If FindFirst (aPath + '*.*', faDirectory, SearchRec) = 0 Then
    Begin
      Repeat

        If (SearchRec.Attr and faDirectory = faDirectory)
          and (SearchRec.Name[1] <> '.')
        Then
          Begin
            If (SearchRec.Attr and faDirectory > 0) then
              Begin

                        Anzahl_Ordner := Anzahl_Ordner + 1;

                        AssignFile(Datei,'C:\test.txt');
                        if IOResult = 0 then
                        Append(Datei);
                        begin
                        writeln(Datei,aPath + SearchRec.Name);
                        CloseFile(Datei);
                        end;
                        Form1.Edit2.Text := aPath + SearchRec.Name;

                        FindFilesTree(aPath + SearchRec.Name);

              End;

          End
        Else

          If aWithFiles
            and (SearchRec.Name <> '.') and (SearchRec.Name <> '..')
          Then
            Begin
                        Anzahl_Datein := Anzahl_Datein + 1;

                        Groesse_insgesamt := Groesse_insgesamt + GetFileSizeEx(apath + SearchRec.Name);

                        AssignFile(Datei,'C:\test.txt');
                        if IOResult = 0 then
                        Append(Datei);
                        begin
                        writeln(Datei,aPath + SearchRec.Name);
                        CloseFile(Datei);
                        end;
                        Form1.Edit2.Text := aPath + SearchRec.Name;

            End;

      Until FindNext (searchRec) <> 0;

      FindClose (SearchRec);
    End;
End;
MFG

hflick 18. Aug 2005 10:46

Re: Datentyp
 
Zitat:

Zitat von storm1988
Ich würde gern die Ordnerstruktur auslesen lassen und diese dann übertragen.
Wie mache ich das am besten, wenn ich die Daten in einen memorystream packe??

Hänge die Dateinamen alle nacheinander in eine TStringlist ein und speichere diese Infos mittels TStringlist.SaveToStream in einen MemoryStream, wobei Du bei größeren Daten immer einen TFileStream nehmen solltest.

---
Holger

storm1988 18. Aug 2005 11:38

Re: Datentyp
 
Guad jetzt hab ich die Strings über die Add Funkion im Tfilestring gespeicher, doch wie kann ich sie jetzt am besten mithilfe des TCP an den Server schicken???

Mfg

hflick 18. Aug 2005 11:56

Re: Datentyp
 
Zitat:

Zitat von storm1988
Guad jetzt hab ich die Strings über die Add Funkion im Tfilestring gespeicher, doch wie kann ich sie jetzt am besten mithilfe des TCP an den Server schicken???

Mfg

Wenn ich mich nicht ganz grauselig irre, hat der IOHandler eine Methode Write, die einen Stream unterstützt. Es gibt aber auch nen Demo zu TCP auf der Indy-Seite.

Also z.B. (direkt getippt...)

myTCP.IOHandler.Write( myStream );

--
Holger

storm1988 18. Aug 2005 13:04

Re: Datentyp
 
Mhh irgend wie gibts bei mir den Befehl net :wall:

I was zwar net ob ich irgedwas falsch verstanden hab, aber eigentlich will ich ja an Tfilestring senden und kan stream???

Mfg

hflick 18. Aug 2005 13:40

Re: Datentyp
 
Zitat:

Zitat von storm1988
Mhh irgend wie gibts bei mir den Befehl net :wall:
I was zwar net ob ich irgedwas falsch verstanden hab, aber eigentlich will ich ja an Tfilestring senden und kan stream???
Mfg

Moment. Du hast die Liste aller Dateinamen als TStringlist. Die speicherst Du in einen TFileStream. Den TFileStream schreibst Du. Fertig.

:roteyes:

storm1988 18. Aug 2005 13:53

Re: Datentyp
 
So alles schön und gut, aber wie schaff ich des jetzt, dass ich TStringlist in TfileStream speicher (Bitte Beispiel). :stupid:

Mfg

hflick 18. Aug 2005 14:20

Re: Datentyp
 
Zitat:

Zitat von storm1988
So alles schön und gut, aber wie schaff ich des jetzt, dass ich TStringlist in TfileStream speicher (Bitte Beispiel). :stupid:

Mfg

Delphi-Quellcode:
var
  fs : TFileStream;

...

  fs := TFileStream.Create( 'whatyoucallit.tmp', fmCreate );
  myStringlist.SaveToStream( fs );
  fs.Position := 0;
 
  myTCPComponent.IOHandler.Write( fs );

...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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