Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi In Stream mehrere Dateien laden? (https://www.delphipraxis.net/30181-stream-mehrere-dateien-laden.html)

Mr Whoopee 21. Sep 2004 17:30


In Stream mehrere Dateien laden?
 
Hallo Freunde,
ich möchte in einen Stream mehrere Dateien laden.
Also ein Bsp:
Auf Server X liegen die Dateien 1.bmp, 2.bmp und 3.bmp.
Jetzt möchte ich alle laden (einzeln in Stream packen kein Problem).
Der Stream sollte dann so aussehen (schematisch):
Stream: 1.bmp+2.bmp+3.bmp
Alle aneinandergehängt sollten in EINER Datei gespeichert werden.
Ist das machbar?

Danke für alle Antworten - Whoopee.

Luckie 21. Sep 2004 17:39

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Mr Whoopee
Ist das machbar?

Ja. :mrgreen:

Mr Whoopee 21. Sep 2004 17:50

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Mr Whoopee
Ist das machbar?

Ja. :mrgreen:

super, kannste mir auch sagen wie? :mrgreen:

Luckie 21. Sep 2004 17:51

Re: In Stream mehrere Dateien laden?
 
Nim einen zweiten Stream und häng dort den Stream mit den Bilder immer an.

Gruber_Hans_12345 21. Sep 2004 17:51

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Mr Whoopee
Zitat:

Zitat von Luckie
Zitat:

Zitat von Mr Whoopee
Ist das machbar?

Ja. :mrgreen:

super, kannste mir auch sagen wie? :mrgreen:

Kenn zwar Luckie's Antwort noch nicht, wird aber vermutlich folgend aussehen:

Ja. :mrgreen:

Edit: Ups zu spät

Keldorn 21. Sep 2004 17:52

Re: In Stream mehrere Dateien laden?
 
gugg dich mal in der opensource-sparte um, dort gibt ein Archiv-Beispiel von Luckie;)

Mfg Frank

Gruber_Hans_12345 21. Sep 2004 17:52

Re: In Stream mehrere Dateien laden?
 
Solltes aber zusätzlich vermerkern, wie lang (Bytes) jedes Bild ist, sonst wirds schwieriger die wieder rauszubekommen.

Mr Whoopee 21. Sep 2004 18:08

Re: In Stream mehrere Dateien laden?
 
meinste das:
http://www.delphipraxis.net/internal...ct.php?t=12956
?

Keldorn 21. Sep 2004 18:12

Re: In Stream mehrere Dateien laden?
 
nein , das: http://www.delphipraxis.net/internal...ct.php?t=29970

Mr Whoopee 21. Sep 2004 18:37

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Luckie
Nim einen zweiten Stream und häng dort den Stream mit den Bilder immer an.

also dann so:

gesstream:=stream1+stream2?

Sharky 21. Sep 2004 18:53

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Mr Whoopee
....gesstream:=stream1+stream2?

Fast ;-)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  st1 : TMemoryStream;
  st2 : TMemoryStream;
begin
  st1 := TMemoryStream.Create;
  st2 := TMemoryStream.Create;
  try
    st1.LoadFromFile('c:\test1.txt');
    st2.LoadFromFile('c:\test2.txt');
    st1.Position := st1.Size; // Stream auf das Ende positionieren
    st1.CopyFrom(st2,0); // Alles vom Beginn des Streams2 in Stream1 kopieren.
    st1.SaveToFile('c:\test12.txt');
  finally
    st1.Free;
    st2.Free;
  end;
end;
Es wird mit .CopyFrom der Inhalt von Stream2 ab der aktuellen Position in Stream1 kopiert.

Mr Whoopee 21. Sep 2004 19:18

Re: In Stream mehrere Dateien laden?
 
ah das sieht doch mal gut aus, DANKE :D

Mr Whoopee 23. Sep 2004 18:56

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von Mr Whoopee
....gesstream:=stream1+stream2?

Fast ;-)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  st1 : TMemoryStream;
  st2 : TMemoryStream;
begin
  st1 := TMemoryStream.Create;
  st2 := TMemoryStream.Create;
  try
    st1.LoadFromFile('c:\test1.txt');
    st2.LoadFromFile('c:\test2.txt');
    st1.Position := st1.Size; // Stream auf das Ende positionieren
    st1.CopyFrom(st2,0); // Alles vom Beginn des Streams2 in Stream1 kopieren.
    st1.SaveToFile('c:\test12.txt');
  finally
    st1.Free;
    st2.Free;
  end;
end;
Es wird mit .CopyFrom der Inhalt von Stream2 ab der aktuellen Position in Stream1 kopiert.

geht das auch mit binären dateien? irgendwie kommen bei mir fehler :(

Sharky 23. Sep 2004 19:46

Re: In Stream mehrere Dateien laden?
 
Zitat:

Zitat von Mr Whoopee
...geht das auch mit binären dateien? irgendwie kommen bei mir fehler :(

Sollte eigentlich gehen. :gruebel:
Hast Du mal ein Beispiel deiner Daten?

Mr Whoopee 24. Sep 2004 14:22

Re: In Stream mehrere Dateien laden?
 
Delphi-Quellcode:
Unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IdHTTP1: TIdHTTP;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  stream: TFileStream;
  stream1, stream2: TMemoryStream;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
stream := TFileStream.Create('c:\temp', fmCreate);
IdHTTP1.Get('http://home.arcor.de/delphi_checker/testdl/1.gif', stream);
finally
stream.Free;
end;
   try
   stream1:=TMemoryStream.Create;
   stream2:=TMemoryStream.Create;
   stream1.LoadFromFile('c:\temp');
   stream2.LoadFromFile('c:\final');
   stream1.Position:=stream1.Size;
   stream1.CopyFrom(stream2,0);
   stream1.SaveToFile('c:\final');
   finally
   stream2.Free;
   stream1.Free;
   end;
try
stream := TFileStream.Create('c:\temp', fmCreate);
IdHTTP1.Get('http://home.arcor.de/delphi_checker/testdl/2.gif', stream);
finally
stream.Free;
end;
   try
   stream1:=TMemoryStream.Create;
   stream2:=TMemoryStream.Create;
   stream1.LoadFromFile('c:\temp');
   stream2.LoadFromFile('c:\final');
   stream1.Position:=stream1.Size;
   stream1.CopyFrom(stream2,0);
   stream1.SaveToFile('c:\final');
   finally
   stream2.Free;
   stream1.Free;
   end;
try
stream := TFileStream.Create('c:\temp', fmCreate);
IdHTTP1.Get('http://home.arcor.de/delphi_checker/testdl/3.gif', stream);
finally
stream.Free;
end;
   try
   stream1:=TMemoryStream.Create;
   stream2:=TMemoryStream.Create;
   stream1.LoadFromFile('c:\temp');
   stream2.LoadFromFile('c:\final');
   stream1.Position:=stream1.Size;
   stream1.CopyFrom(stream2,0);
   stream1.SaveToFile('c:\final');
   finally
   stream2.Free;
   stream1.Free;
   end;
try
stream := TFileStream.Create('c:\temp', fmCreate);
IdHTTP1.Get('http://home.arcor.de/delphi_checker/testdl/4.gif', stream);
finally
stream.Free;
end;
   try
   stream1:=TMemoryStream.Create;
   stream2:=TMemoryStream.Create;
   stream1.LoadFromFile('c:\temp');
   stream2.LoadFromFile('c:\final');
   stream1.Position:=stream1.Size;
   stream1.CopyFrom(stream2,0);
   stream1.SaveToFile('c:\final');
   finally
   stream2.Free;
   stream1.Free;
   end;
try
stream := TFileStream.Create('c:\temp', fmCreate);
IdHTTP1.Get('http://home.arcor.de/delphi_checker/testdl/5.gif', stream);
finally
stream.Free;
end;
   try
   stream1:=TMemoryStream.Create;
   stream2:=TMemoryStream.Create;
   stream1.LoadFromFile('c:\temp');
   stream2.LoadFromFile('c:\final');
   stream1.Position:=stream1.Size;
   stream1.CopyFrom(stream2,0);
   stream1.SaveToFile('c:\final');
   finally
   stream2.Free;
   stream1.Free;
   end;
try
stream := TFileStream.Create('c:\temp', fmCreate);
IdHTTP1.Get('http://home.arcor.de/delphi_checker/testdl/6.gif', stream);
finally
stream.Free;
end;
   try
   stream1:=TMemoryStream.Create;
   stream2:=TMemoryStream.Create;
   stream1.LoadFromFile('c:\temp');
   stream2.LoadFromFile('c:\final');
   stream1.Position:=stream1.Size;
   stream1.CopyFrom(stream2,0);
   stream1.SaveToFile('c:\final');
   finally
   stream2.Free;
   stream1.Free;
   end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
stream := TFileStream.Create('c:\final', fmCreate);
stream.Free;
end;

end.
So sieht es aues - ist noch umständlich gemacht - ich weiß - war zu faul - wollte es geh nur testen...
rauskommen MÜSSTE eigentlich ne exe - als auf C:\ die "Final" Datei in "Final.exe" umbenennen - aber dann geht die exe nicht.
Hochgeladen habe ich es im Binary Mode.

Sharky 1. Okt 2004 16:48

Re: In Stream mehrere Dateien laden?
 
:gruebel:
Mir ist nicht klar was das Programm machen soll.
Du lädst irgendwelche Bilder aus dem Internet und möchtest daraus eine EXE machen?

Mr Whoopee 7. Okt 2004 16:13

Re: In Stream mehrere Dateien laden?
 
also nochmal zur erklärung:

ich habe eine exe. die habe ich zerschnitten,
einfach in mehrere dateien aufgesplittet.
wenn man die 2. Datei an die 1. hängt, die 3. an die 2. usw.
und die dann wieder in .exe umbenennt ist die exe wieso so wie sie
war. bloß ich würde das ganz gern im stream machen. also immer
reinladen und dann dann hinten ranhängen und dann zum schluss nur eine datei haebn

toms 7. Okt 2004 16:17

Re: In Stream mehrere Dateien laden?
 
Einige Beispiele dazu:
http://www.swissdelphicenter.ch/de/showcode.php?id=1075
http://www.swissdelphicenter.ch/de/showcode.php?id=1617
http://www.swissdelphicenter.ch/de/showcode.php?id=1266


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.

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