Ver Mensaje Individual
  #4  
Antiguo 15-11-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Tal como te indica roman, la cadena %%EOF se sitúa en la última línea del archivo PDF para indicar su final (PDF Reference).
Y dado que allí debe estar, no se me ocurre código más eficiente que el que te indica para hallarla.

Ahora, si desearas buscar cualquier cadena en cualquier archivo, podrías hacer:
Código Delphi [-]
function ExistsStrInFile(const SearchedStr, FileName: string): Int64;
var
  FS    : TStream;
  i, cc : Integer;
  ch    : Char;
begin
  Result := -1;
  FS := TFileStream.Create(FileName, fmOpenReadWrite);
  try
    FS.Position := 0;
    cc := 1;
    i  := 0;
    while (Result=-1) and (i < FS.Size) do
    begin
      FS.Read(ch, SizeOf(ch));
      if cc = Length(SearchedStr) then
      begin
        Result := FS.Position - Length(SearchedStr);
        Break;
      end;
      if ch = SearchedStr[cc] then
        Inc(cc)
      else
        cc := 1;
      Inc(i);
    end;
  finally
    FS.Free;
  end;
end;
la función devuelve -1 si no halla coincidencia o la posición en caso contrario, pero claramente no es eficiente para el caso anterior.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita