AGB  ·  Datenschutz  ·  Impressum  







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

ReadFile und WriteFile

Ein Thema von Schwedenbitter · begonnen am 29. Jun 2008 · letzter Beitrag vom 1. Jul 2008
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: ReadFile und WriteFile

  Alt 30. Jun 2008, 21:13
Hi Alex,

Zitat von Schwedenbitter:
... Ich habe die Änderungen in meinen Quellcode übernommen. ...
nicht wirklich.

Ich habe das dann mal für dich gemacht und dann sieht das so aus:

Delphi-Quellcode:
Const
  BuffSize = 1 shl 20; // genau 1,0 MB

var
  Buffer: Array [1..BuffSize] Of Byte;

Procedure TForm1.Start1Click(Sender: TObject);
Var
  I: Cardinal;
  FHandle: Cardinal;
  WriteFailed, WriteCanceled: Boolean;
  BytesWritten: Cardinal;
  E1,E2,CB: Boolean;
begin
  // ...
        { Jetzt schreiben}
        If FHandle<>INVALID_HANDLE_VALUE Then
        Begin
          if CB1.Checked
            then I := MaxInt
            else I := StrToInt(Edit2.Text);
       Repeat
            WriteFailed:=not WriteFile(FHandle,Buffer,BuffSize,BytesWritten,nil);
            Dec(I);
            Application.ProcessMessages;
          Until WriteCanceled Or WriteFailed Or (I=0) or (BytesWritten<BuffSize);
          If WriteFailed Then
            ShowMessage('Mist: ' + SysErrorMessage(GetLastError));
          {Datei schließen}
          CloseHandle(FHandle);
        End;
  // ...
end;
Ein MegaByte musst du nicht selbst ausrechnen, das macht der Compiler für dich - wenn du willst. Den Buffer solltest du nicht lokal zur Prozedur deklarieren, er könnte den Stack sprengen. Beim Benennen deiner Komponenten und Variablen bist du noch nicht sehr konsistent, lies dazu mal einen Style-Guide. Beim Auffangen des Rückgabewertes von WriteFile() hast du die Semantik invertiert, so dass Erfolg zu Misserfolg umgemünzt wurde.

Vergleichbare Ergebnisse erhältst du mit deiner Programmidee nie. Du kannst zwar den einen oder anderen Cache eliminieren, aber die aktuelle Verteilung von freiem Speicherplatz dürfte von Festplatte zu Festplatte stark abweichen.

Trotzdem noch viel Spaß mit deinem Projekt.

Freundliche Grüße
  Mit Zitat antworten Zitat
 


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 01:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz