Dateiübertragung großer Dateien (Konzeptfrage)



  • Ich benutz den BDS2006

    angenommen ich wähle den minimalistischsten weg um eine anwendung mit ladebalken zu schreiben, was wäre das bessere konzept für die dateiübertragung

    a) eine klasse für die Übertragung schreiben die als Thread läuft und regelmäßig einen callback für den prozentvorschub liefert (muss vor beginn der übertragung instantiiert werden)

    b) eine methode die regelmäßig Application->ProcessMessages(); aufruft und dort eine Variable mit dem aktuellem Übertragungsstatus ausliesst (in der WndProc())

    c) oder gar mit SendMessage arbeiten ?

    vielleicht hat jemand eine völlig andere Idee

    PS: ich möchte hier nix von wegen IndySockets oder ähnlichem haben, ich mag die eher rudimentären mittel con C und STL von C++, da weis man was das programm macht :p



  • Hallo,

    Ich würde Variante a wählen (mach ich auch selber so). b) gefällt mir überhaupt nicht. c) hatte ich schon mal (funktioniert auch ganz gut), habe das aber aus Gründen der Portabilität wieder entfernt.



  • das b) dir nicht gefällt war mir fast schon klar, hab schon üble stackfehler damit gehabt XD

    das mit den threads iss leider auch nicht SO portabel und VCL-freie Threads für mich noch neuland, darüber mach ich mir gedanken wenn ich den BDS hier los bin

    PS ich habe hier (auch wenns beim beenden eher unwichtig ist und es auch nur 4 bytes sind) ein speicherleck in den indysockets beim beenden meines programmes ... ausserdem hab ich mit dem indy auch ein verionsproblem von BCB6 zu BDS 2006 deswegen benutz ich fast nur rudimentäres zeug was in irgendwelchen standards festgelegt ist und sich so schnell nicht verändert oder wenigstens eine 100ige kompatibiliät zu vorgängern hat



  • Um die Threads ging es mir da gar nicht sondern um die Funktionen die in diesem Thread aufgerufen werden (die eigentlichen Laderoutinen). Die sollte Borlandfrei werden. Das habe ich dann mit Hilfe von boost und diversen CallBack-funktionen auch geschafft.



  • mh nja so hätt ich das dann auch gemacht ^^ die TThread-Klasse einfach austauschbar machen und je nach compiler ersetzen


Anmelden zum Antworten