Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Stream/File mit Musterdaten beschreiben

  Alt 28. Jun 2005, 17:55
folgende Procedure beschreibt einen Stream mit einen vorgegebenen String.
Dieser String (pattern) wird solange wiederholt, bis die vorgegebene Grösse (size) erreicht ist:
Delphi-Quellcode:
procedure WritePatternString(stream:TStream; pattern:string; size:integer);
var
   i : Integer;
   rest : Integer;
begin
   Assert(Assigned(stream));

   // wenn kein pattern vorgegeben, dann wird mit #0 gefüllt
   if pattern='then
      pattern := #0;

   // wenn das pattern sehr kurz ist, wird es solange
   // aneinander gehängt, bis mindestens 1KB zusammenkommt
   // nur so ist die Performance zufriedenstellend
   while Length(pattern) < 1024 do
      pattern := pattern + pattern;

   // zurück auf Anfang
   stream.Position := 0;
   for i := 1 to Size div Length(pattern) do
   begin
      stream.WriteBuffer(pattern[1], Length(pattern));
   end;

   // restliche Byte ausrechnen
   rest := size mod Length(pattern);
   // und ggf. schreiben
   if rest > 0 then
      stream.WriteBuffer(pattern[1], rest);
end;

procedure WritePatternToFile(const filename:string; pattern:string; size:integer);
var
   fs : TFileStream;
begin
   // filestream erzeugen
   fs := TFileStream.Create(filename, fmCreate);
   try
      // Daten schreiben
      WritePatternString(fs, pattern, size);
   finally
      fs.Free;
   end;
end;
Andreas
  Mit Zitat antworten Zitat