Einzelnen Beitrag anzeigen

bscreator

Registriert seit: 20. Jan 2005
Ort: Kempten
15 Beiträge
 
#1

Dateien zerlegen und zusammenfügen

  Alt 14. Apr 2006, 22:58
Liebe Delphi-Fans,
habe folgendes Problem:

Mein aktuelles Projekt ist eine Software, die große Dateien in mehrere kleine Dateien zerlegen und auch wieder zu einer Datei zusammenfügen kann (Ja, ich weiß, das Rad immer wieder neu erfinden..., aber da ich schon seit längerer Zeit nicht mehr Delphi programmiert hab, muss ich wieder reinkommen).
Soviel zum Prolog...

In meinem Delphi 4 - Buch stehen ein paar Dinge, aber nichts richtig konkretes.

Problem 1:

Die Software soll möglichst wenig Arbeitsspeicher verwenden (auch wenns dadurch vielleicht bisl länger dauert...), das ist eigentlich die Vorraussetzung. Welche Methode würdet ihr da empfehlen ? (mit Streams, Memory Mapped Files, oder sonst was ?)



Problem 2:
Ein Stück quellcode liegt bei. Der Code zählt die Anzahl der Datensätze einer Datei:
Delphi-Quellcode:
    Exists := false;
    Pos := 0;

    if (FileExists(Edit1.Text)) =true then
    begin
        Res:=DisableWriteProtection(Edit1.Text); //Schreibschutz aufheben
[b] Edit4.Text := 'Waiting...';[/b]
        
        try //Anzahl der Datensätze ermitteln

          AssignFile(F, Edit1.Text); //Dateipointer zuweisen
          Reset(F); //Datei öffnen
          
          Seek(F,0); //Satzzeiger an Anfang

          While (EOF(F)) = false do
          begin
              Pos := Pos+1;
              Seek(F, Pos);
          end;

          Edit4.Text := IntToStr(Pos);
        finally
           CloseFile(F);
        end;
Der Code funktioniert, auch die Anzahl der Datensätze werden korrekt zurückgegeben. Da der Benutzer aber nicht denken, soll, dass sich der Computer aufgehängt hat, soll im Edit4-Feld vor dem Beginn der while-Schleife ein 'Waiting' angezeigt werden. Nach Durchlauf der While-Schleife wird das 'Waiting' durch die Anzahl der Datensätze ersetzt.
Seltsamerweise wird im Edit4-Feld aber kein 'Waiting...' angezeigt, sondern nur die Anzahl der Datensätze, wenn die while-Schleife beendet ist. Hab schon versucht, den Befehl "Edit4.Text := 'Waiting'" an eine andere Stelle innerhalb des try-finally-Blocks zu setzen, aber auch das geht nicht. Was ist da los ?

Vielen, vielen Dank
  Mit Zitat antworten Zitat