Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dateien über Netzwerk verschicken (https://www.delphipraxis.net/27208-dateien-ueber-netzwerk-verschicken.html)

Knotti2015 5. Aug 2004 20:49


Dateien über Netzwerk verschicken
 
Hallo Leute, :)

habt ihr eine paar gute Codeschnipsel oder ein paar Tipps wie ich ein Programm programmieren könnte mitdem man Dateien vom Computer zum Computer schicken kann?

Kernel32.DLL 6. Aug 2004 10:35

Re: Dateien über Netzwerk verschicken
 
Hm...

Da du anscheinend Delphi 6 Personal hast, wird das wohl nix, da die I-net Komponenten fehlen.

Vielleicht funktioniert ja Bei Google suchenIndy

Knotti2015 6. Aug 2004 11:55

Re: Dateien über Netzwerk verschicken
 
ich habe nicht 6 personal sondern 7 enterprise

Knotti2015 6. Aug 2004 11:56

Re: Dateien über Netzwerk verschicken
 
Interresannt aber wie einbauen (Aussehen der FOrm und Komponenten)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  fs: TFileStream;
begin
  if not OpenDialog1.Execute then exit; //erstmal besorgt man sich den Pfad der Datei, z.B. mit dem Standard Dialog TOpenDialog
  with IdTCPClient1 do
  begin
    fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyWrite); //Datei in FileStream einlesen
    Connect; //und Verbindung herstellen
    try
      OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
      try
        WriteStream(fs, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird} 
        CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      Disconnect;
      fs.Free;
    end;
  end;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  fs: TFileStream;
  SizeOfIncomingStream: integer;
begin
  if not SaveDialog1.Execute then exit;
  fs := TFileStream.Create(SaveDialog1.Filename, fmCreate or fmShareExclusive);
  with AThread.Connection do
    try
      SizeOfIncomingStream := ReadInteger; //Größe des Streams empfangen
      ReadStream(fs, SizeOfIncomingStream); //und übergeben
    finally
      Disconnect;
      fs.Free;
    end;

XHelp 6. Aug 2004 12:53

Re: Dateien über Netzwerk verschicken
 
Mit TServerSockt TClientSocket geht das viel einfacher...
ich habe den quelltext schon mal gepostet...

Knotti2015 6. Aug 2004 21:42

Re: Dateien über Netzwerk verschicken
 
hja aber m einen text zu schicken das hab ich shcon ich suche einen quellcode um eien datei zu verschicken

Mr Whoopee 5. Dez 2004 21:37

Re: Dateien über Netzwerk verschicken
 
Der Quelltext ist super, jedoch habe ich ein anderes Problem:
Ich möchte nicht, dass der Server empfängt und speichert,
sondern ich möchte, dass er Daten zum Clienten sendet.
Also auf Rechner A hört der Server und Rechenr B verbindet
sich zu Rechner A und bekommt von ihm eine Datei.

Ne Ahnung, wie das geht?


Mr Whoopee.

EDIT: Die ServerKomponente kennt die ganzen Buffer / Stream Befehle nicht:
[Fehler] Unit1.pas(36): Undefinierter Bezeichner: 'OpenWriteBuffer'
[Fehler] Unit1.pas(38): Undefinierter Bezeichner: 'WriteStream'
[Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'CloseWriteBuffer'
[Fehler] Unit1.pas(41): Undefinierter Bezeichner: 'CancelWriteBuffer'
[Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'Disconnect'

Chrissi91 1. Mai 2008 08:41

Re: Dateien über Netzwerk verschicken
 
Zitat:

Zitat von Mr Whoopee
EDIT: Die ServerKomponente kennt die ganzen Buffer / Stream Befehle nicht:
[Fehler] Unit1.pas(36): Undefinierter Bezeichner: 'OpenWriteBuffer'
[Fehler] Unit1.pas(38): Undefinierter Bezeichner: 'WriteStream'
[Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'CloseWriteBuffer'
[Fehler] Unit1.pas(41): Undefinierter Bezeichner: 'CancelWriteBuffer'
[Fehler] Unit1.pas(45): Undefinierter Bezeichner: 'Disconnect'

Ich hole ja ungerne Threads von 2004 aus den Tiefen der DP wieder vor, aber das war der einzige Thread der mein Problem anspricht.

Ich habe nämlich genau dasselbe Problem wie Mr Whoopee. Woran liegt es, dass mein Delphi 7 PE mit Indy 10 diese Befehle nicht kennt?

Edit: Bei mir bezieht es sich aber auf den Clienten, nicht auf den Server, wie Mr Whoopee sagte. Da hat er sich wohl versprochen. :D


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