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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-06-2007
PTW PTW is offline
Miembro
 
Registrado: abr 2004
Posts: 55
Poder: 22
PTW Va por buen camino
Ok, no te preocupes. No volverá a pasar.

Una cosa sobre el código que has mandado:

Supongo que "$67706A2E
" es la representación en Hexadecimal de la tabla Ascii de la cadena ".jpg" ¿no?.

Pero he intentado buscar una cadena que empieza por "ID" (ya que me interesa el valor que tiene viene a continuación: ejemplo ID10)

Pero al hacer:
Código Delphi [-]if GetCardinal(lpBuffer[Index]) = $4449 then // 'ID'

nunca entra en ese if

¿Que es lo que estoy haciendo mal?
¿De donde sacas la representación de cada caracter? ¿de la tabla Ascii?

Saludos








Responder Con Cita
  #2  
Antiguo 01-06-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 21
cHackAll Va por buen camino
Cool Ok

Cita:
Empezado por PTW
...Supongo que "$67706A2E" es la representación en Hexadecimal de la tabla Ascii de la cadena ".jpg" ¿no?.
Exactamente!

Cita:
Empezado por PTW
...Pero he intentado buscar una cadena que empieza por "ID" (ya que me interesa el valor que tiene viene a continuación: ejemplo ID10)
Debes tener MUY en cuenta que esta funcion que hice, encuentra '.jpg' y recorre luego hacia atras para copiar todo el nombre!

Cita:
Empezado por PTW
...Pero al hacer:
if GetCardinal(lpBuffer[Index]) = $4449 then // 'ID'
nunca entra en ese if
por supuesto, la funcion GetCardinal retorna una variable de 32 bits (4 bytes), de estos solo necesitas 2... entonces con:

Código Delphi [-]
if Word(GetCardinal(lpBuffer[Index])) = $4449 then
solucionas el problema, te lo dejo misma funcion un poco mejorada por si las dudas:

Código Delphi [-]
function GetCardinal(var Buffer): Cardinal;
asm
 mov eax, [eax]
end;
 
const CrLf: Word = $0A0D;
var hFile, Index, Size, Count, Dummy: Cardinal; lpBuffer: PChar; Found: LongBool;
begin
 hFile := CreateFile('c:\250.b00', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0);
 if hFile = INVALID_HANDLE_VALUE then
  begin
   MessageBox(0, 'No se puede acceder al archivo!', nil, MB_ICONEXCLAMATION);
   Exit;
  end;
 lpBuffer := MapViewOfFile(CreateFileMapping(hFile, nil, PAGE_READONLY, 0, 0, nil), FILE_MAP_READ, 0, 0, 0);
 Size := GetFileSize(hFile, nil);
 CloseHandle(hFile);
 hFile := CreateFile('c:\FileNames.txt', GENERIC_WRITE, 0, nil, CREATE_ALWAYS, 0, 0);
 Index := 0;
 Found := False;
 while Index < Size do
  begin
   if not Found and (Word(GetCardinal(lpBuffer[Index])) = $4449) then // 'ID'
    begin
     Count := 1;
     Inc(Index, 2);
     while lpBuffer[Index + Count] in ['0'..'9'] do Inc(Count);
     WriteFile(hFile, lpBuffer[Index], Count, Dummy, nil);
     WriteFile(hFile, CrLf, 2, Dummy, nil);
     WriteFile(hFile, CrLf, 2, Dummy, nil);
     Inc(Index, Count);
     Found := True;  // No debemos volver a antrar acá, pues puede haber algun nombre de archivo con ID
    end
   else
    if GetCardinal(lpBuffer[Index]) = $67706A2E then // '.jpg'
     begin
      Count := 0;
      while lpBuffer[Index - Count - 1] in ['a'..'z', 'A'..'Z', '0'..'9'] do Inc(Count);
      WriteFile(hFile, lpBuffer[Index - Count], Count + 4, Dummy, nil);
      WriteFile(hFile, CrLf, 2, Dummy, nil);
      Inc(Index, 4);
     end
    else
     Inc(Index);
  end;
 CloseHandle(hFile);
end;

Así y todo me queda la duda de que si los archivos pueden contener el nombre 'ID', en ese caso sirve la variable 'Found'
Además hay la posiblidad de que todos los archivos tengan ESE dato en una posicion fija, pero en todo caso la funcion anterior sirve.

Suerte!
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
Pasar ficheros de Theos a otro Formato Triton Varios 4 30-10-2007 23:03:33
ficheros binarios e imagenes sapi Varios 2 03-10-2006 16:50:34
Correo Web y Ficheros de Texto. marcoszorrilla Varios 29 06-09-2006 22:51:55
Leer enteros de 32-bits en ficheros binarios elcaracas C++ Builder 2 08-04-2005 21:46:54
Ficheros binarios deimonio Varios 2 29-12-2003 13:38:47


La franja horaria es GMT +2. Ahora son las 10:49:33.


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