AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP Datei/Senden GetNamePath
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Datei/Senden GetNamePath

Ein Thema von Holger · begonnen am 24. Sep 2003 · letzter Beitrag vom 24. Sep 2003
Antwort Antwort
Holger

Registriert seit: 4. Aug 2003
Ort: Meerbusch
8 Beiträge
 
Delphi 7 Enterprise
 
#1

TCP Datei/Senden GetNamePath

  Alt 24. Sep 2003, 16:14
Hallo zusammen,
Ich arbeite gerade daran Dateien über Lan und Internet zu verschicken
dazu habe ich mir folgenden Code gezogen!

Client
Delphi-Quellcode:
procedure TFtClient.BtSendenClick(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 TCPClient 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;
Server
Delphi-Quellcode:
procedure TFTServer.TCPServerExecute(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;
end;
Das funktioneirt auch soweit recht gut so lange ich nicht zu große Dateien verschicke!
Ansonten passiert in dem Programm einfach mal gar nichts oder es friert ein!
Nun meine 2 Fragen.
1. Wie kann ich dem Server den Dateinamen übermitteln so das diesem im SaveDialog die Datei direkt mit richtiger Dateiendung angezeigt wird ? Geht das mit GetNamePath? Wenn ja wie muss ich das einbinden!

2. Ich würde gerne eine Art Statusanzeige haben. Habe es bereits mit der Prgressbar und den OnBegin und Onwork Ereignissen probiert. Ich erhalte zwar über

Progressbar1.Max := AworkCountMax; die Dateigröße aber das Problem besteht darin das das OnWork Ereignis

Progressbar1.Position := AworkCount; gar nicht ausgelöst wird!

Wie kann ich das beheben ?

Schon mal danke im voraus bis denn

Holger
  Mit Zitat antworten Zitat
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#2

Re: TCP Datei/Senden GetNamePath

  Alt 24. Sep 2003, 16:59
Ja ja, da sind wir schon 2!
Wäre ebenfalls für jeden Vorschlag dankbar!

@wardz!
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TCP Datei/Senden GetNamePath

  Alt 24. Sep 2003, 17:11
Jetzt sind wir schon 3
Ich hab genau das gleiche Problem, nur das bei mir auch noch eine Zugriffsverletzung auftritt, wenn ich zu große Dateien verschicken will.
Habt ihr das auch mit dem Tutorial in der Code-Library gemacht?

Gruß
Christian
  Mit Zitat antworten Zitat
ATwardz

Registriert seit: 12. Mai 2003
205 Beiträge
 
Delphi 7 Professional
 
#4

Re: TCP Datei/Senden GetNamePath

  Alt 24. Sep 2003, 19:25
Ja haben wir und mit der Fortschrittsanzeige für INDY - FTP mit onworkbegin und onwork, sehr seltsam diese Komponente!
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TCP Datei/Senden GetNamePath

  Alt 24. Sep 2003, 22:53
Nabend.
Holger und ich haben die IdTCP-Kompos benutzt.
"OnWork" funktioniert leider garnicht, und größere Dateien bereiten auch Probleme.

Gruß
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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