AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnis Problem (Streams)

Ein Thema von monty.ms · begonnen am 1. Jun 2007 · letzter Beitrag vom 1. Jun 2007
Antwort Antwort
monty.ms

Registriert seit: 19. Nov 2004
76 Beiträge
 
#1

Verständnis Problem (Streams)

  Alt 1. Jun 2007, 01:04
Hallo

Ich habe hier ein Tutorial aus der Code-Library und da bin ich an eine Stelle gekommen wo mir das Verständnis zu gefehlt hat.
Es geht um das Versenden von Dateien, speziell die Streams. Folgender Auszug:

Delphi-Quellcode:
  [...]
while (iTmpSize < iFileSize) and (not bError) do begin
  tmpMs.clear;
  Application.ProcessMessages;
  iSendTime := GetTickCount;
  try
    iNextSize := iFileSize - iTmpSize;
    if iNextSize > cFileSplitSize then iNextSize := cFileSplitSize;
    iTmpSize := iTmpSize + tmpMs.CopyFrom(fs,iNextSize);
    TcpCon.OpenWriteBuffer;
    TcpCon.WriteStream(tmpMS,true,true);
    TcpCon.CloseWriteBuffer;
  [...]
Es geht mir nicht um das Senden (darum auch nicht in die Internet Rubrik) sondern speziell um "tmpMs.CopyFrom(fs,iNextSize)"
Ich versteh was er da macht, aber da es eine Schleife ist, hab ich das gefühl er kopiert immer den selben Block. Wenn fs immer gleich bleibt, und iNextSize generell auch (außer am Schluss) dann müsste doch immer das selbe kopiert werden?!

Also versteht mich nicht falsch, das Programm funktioniert und macht was es soll, aber als ich mir das näher angesehen hab, ist mir das aufgefallen. Hoffe mich kann da jemand aufklären

Danke schonmal für eure Hilfe

monty
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Verständnis Problem (Streams)

  Alt 1. Jun 2007, 04:14
Zitat:
Die Methode CopyFrom kopiert die angegebene Anzahl Bytes aus einem Stream in einen anderen.

function CopyFrom(Source: TStream; Count: Int64): Int64;

Beschreibung

Mit CopyFrom können Sie Daten aus einem Stream in einen anderen kopieren. Der Benutzer muß keinen Pufferspeicher erstellen, lesen, beschreiben und freigeben, um Daten zu kopieren.

CopyFrom kopiert die in Count angegebene Anzahl Bytes aus dem in Source angegebenen Stream in den Stream. Dann verschiebt es die aktuelle Position um die in Count angegebene Anzahl Bytes und gibt die Anzahl der kopierten Bytes zurück.

Wenn Count 0 enthält, setzt CopyFrom vor dem Lesen die Position in Source auf 0 und kopiert dann den gesamten Inhalt von Source in den Stream. Wenn Count größer oder kleiner als 0 ist, liest CopyFrom ab der aktuellen Position in Source.
Vorsicht, falls (Source.Position + Count) > Source.Size! In diesem Fall wirft z.B. TMemoryStream eine Exception "Stream-Lesefehler". Man könnte aber auch erwarten, dass einfach die restlichen Bytes kopiert werden und die Zahl der tatsächlich kopierten Bytes zurückgegeben wird.
Miniaturansicht angehängter Grafiken
copyfrom_203.png  
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
monty.ms

Registriert seit: 19. Nov 2004
76 Beiträge
 
#3

Re: Verständnis Problem (Streams)

  Alt 1. Jun 2007, 04:26
Vielen Dank. Das hat mir weitergeholfen

monty
  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 05:14 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