Einzelnen Beitrag anzeigen

Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 24. Okt 2012, 23:07
Wie würdest du das lösen? Den Speicher außerhalb der Funktion allozieren?
Kommt ganz drauf an, was du mit den 100 Bytes bezwecken willst.. Ein Beispiel wäre das hier
Delphi-Quellcode:
// die funktion liefert die erste datei, bei der die ersten 100 stellen aus Nullen bestehen, zurück
function searchForEmpty100(const Filenames: Array of AnsiString): Integer;
var
  iFile : Integer;
  Buffer : AnsiString;
  hFile : THandle;
  Bytes : Cardinal;
const
  BUFSIZE = 100;
begin
  SetLength(Buffer, BUFSIZE); // einmaliges Allozieren
  for iFile := 0 to High(Filenames) do
  begin
    hFile := CreateFileA(pAnsiChar(Filenames[iFile]), GENERIC_READ, FILE_SHARE_READ, NIL,
      OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); // jede datei öffnen
    if hFile <> INVALID_HANDLE_VALUE then
      try
        ReadFile(hFile, Buffer[1], BUFSIZE, Bytes, NIL);
        if BUFSIZE = Bytes then
        begin // genau 100 zeichen konnten eingelesen werden
          if check_100bytes(buffer) then
          begin
            Result := iFile;
            break;
          end;
        end;
      finally
        CloseHandle(hFile); // und wieder schließen, sofern geöffnet
      end;
  end;
end;
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat