Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2012
Avatar de adebonis
adebonis adebonis is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 145
Poder: 21
adebonis Va por buen camino
Buscar una cadena en un Stream

Hola a todos.

El caso es que tengo que buscar una cadena dentro de un MemoryStream. El memoryStream lo cargo con un archivo pdf y debo buscar una cadena específica y conocer la posición dentro del stream. Posteriormente debo extraer a partir de esa posición una cadena más larga que la de búsqueda.

La cadena a buscar es de 8 posicions ('20120606') y una vez encontrada debo extraer 20 caracteres desde la posición de inicio de la cadena encontrada.

Utilizo el siguiente código, pero no funciona:

Código Delphi [-]
procedure LocalizaCadena;
var
  NomFichero, Texto: String;
  Stream: TMemoryStream;
  i, n, Long: Integer;
  Val: PByte;
begin

  dm.OpenDialogo.InitialDir := 'd:\Vistas';
  dm.OpenDialogo.Filter := 'Adobe Acrobat (*.pdf)|*.pdf';
  if dm.OpenDialogo.Execute then
    NomFichero := dm.OpenDialogo.Filename
  else begin
    Exit;
  end;

  Texto := '20120606';
  Val := PBYTE(PCHAR(Texto));
  Long := Length(Texto);

  Stream := TMemoryStream.Create;
  Stream.LoadFromFile(nomFichero);
  try
  for n:= 0 to Stream.Size- 1 do begin
    if PBYTE((cardinal(Stream.Memory) + n))^ = Val^ then begin
      for i:= 1 to Long do
        if PBYTE(cardinal(Stream.Memory)+n+i)^ <> PBYTE(cardinal(Val)+i)^ then break;
      if i = Long then
        mensaje(cadena encontrada');
    end;
  end;
  finally
  Stream.Free;
  end;
end;

Gracias a todos.

Adolfo Bonis
Barcelona
Responder Con Cita
  #2  
Antiguo 02-07-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Ese código sólo busca la cadena, no extrae 20 caracteres....

Buscar busca y encuentra. Me pregunto si esa cadena está en el pdf. Un pdf no es un archivo de texto. ¿Has comprobado que la cadena está con un editor hexadecimal?. ¿Buscas una cadena o números hexadecimales?


Saludos.
Responder Con Cita
  #3  
Antiguo 03-07-2012
Avatar de adebonis
adebonis adebonis is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 145
Poder: 21
adebonis Va por buen camino
Hola.

De hecho no sé como esta guardada esta cadena dentro de pdf, yo suponía que los valores de los campos estaban en ascci.

El documento pdf es un formulario que ya tiene unos campos con valores predeterminados. Uno de esos valores ya conocidos empieza por esta cadena y necesito conocer toda la cadena de la que ya sé su longitud.

Probaré de editar el pdf en un editor hexadecimal para ver si la encuentro. Ya veremos...

Gracias y saludos
Responder Con Cita
  #4  
Antiguo 03-07-2012
Avatar de adebonis
adebonis adebonis is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 145
Poder: 21
adebonis Va por buen camino
Hola.

He editado el pdf en un editor hexadecimal y no he encontrado la cadena.

¿Alguien sabe cómo se guardan los datos de los valores de los campos en un archivo pdf?

Gracias.
Adolfo Bonis
Barcelona
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Funcion para buscar cadena dentro de otra cadena y el numero de veces flystar Varios 3 02-07-2007 22:48:08
Buscar un palabra dentro de una cadena eyscom Varios 6 29-07-2006 00:05:05
Buscar número en cadena torito Varios 4 19-04-2004 19:05:25
buscar dato de una cadena noe SQL 5 10-02-2004 18:58:20
Buscar cadena dentro de otra cadena doverzhoff Varios 4 27-01-2004 05:27:15


La franja horaria es GMT +2. Ahora son las 14:05:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi