Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-01-2004
chavetaz chavetaz is offline
Miembro
 
Registrado: oct 2003
Ubicación: Buenos Aires, Argentina
Posts: 29
Poder: 0
chavetaz Va por buen camino
Exclamation Problema con el manejo de punteros?

Hola gente:
Estoy haciendo una rutina para manejar cookies pero estoy haciendo algo mal, del debuger no me dice en que linea esta el error, pero me presenta la ventana de debug del cpu con la linea erronea en assembler....

si alguno le da una miradita al codigo por ahi me puede decir donde podria estar el error, o alguna pista (se me hace que tiene que ver con el puntero Pinfo y el GetMem/FreeMen)


var
info: INTERNET_CACHE_ENTRY_INFOA;
Pinfo: PInternetCacheEntryInfoA;
Buffer: DWORD;
Handle: THandle;
esEsta: string;
begin
esEsta:='';
Buffer := 0;
Pinfo:=@info;
//primera vez obtengo el tamaño del buffer correcto
Handle := FindFirstUrlCacheEntry(nil, info, Buffer);
if (Handle=0) and (GetLastError()= ERROR_INSUFFICIENT_BUFFER) then
begin
GetMem(Pinfo,Buffer);
Handle := FindFirstUrlCacheEntry(nil, info, Buffer);
if Handle <> 0 then //exito
begin
repeat //bucle
if (info.CacheEntryType = NORMAL_CACHE_ENTRY) then
begin
if StrPos(info.lpszSourceUrlName,PChar(CmbPattern.Text)) <> nil then
begin
esEsta:= info.lpszSourceUrlName;
break;
end;
end;
FreeMem(Pinfo, Buffer); // se borra el buffer

Buffer := 0;
FindNextUrlCacheEntry(Handle, info, Buffer);
GetMem(Pinfo, Buffer);
until FindNextUrlCacheEntry(Handle, info, Buffer) = False;
//fin bucle
FindCloseUrlCache(Handle);
end;
end;
end;


una vez mas les agradezco mucho su ayuda.
Saludos!
__________________
Delphi fan
Responder Con Cita
  #2  
Antiguo 09-01-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
No sé por qué te está dando ese error, pero me muero de curiosidad por saber por qué necesitas llegar a tan bajo nivel para trabajar con cookies. ¿No puedes hacerlo con TWebRequest.CookieFields?
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 09-01-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Me respondo a mi mismo.... estás trabajando en el lado cliente, perdona, pero acostumbrado a trabajar con cgi's no pense mucho antes de contestar, suert
__________________
E pur si muove
Responder Con Cita
  #4  
Antiguo 09-01-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
A simple vista te puedo decir que estas asignando memoria al puntero Pinfo, pero luego no lo usas para nada. Sigues usando info...

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 09-01-2004
chavetaz chavetaz is offline
Miembro
 
Registrado: oct 2003
Ubicación: Buenos Aires, Argentina
Posts: 29
Poder: 0
chavetaz Va por buen camino
Unhappy

no entiendo!
Pinfo no es un puntero a info ?
eso es lo que trate de hacer...

porque a GetMen le tengo que pasar un puntero, pero info es una estructura, trate @info pero no funciono, asi que "invente" Pinfo...
si el error es ese, como seria la forma correcta de enviar el puntero de info como parametro de GetMen?

Gracias

PD: Hay alguna forma de enviar el codigo tabulado?
__________________
Delphi fan
Responder Con Cita
  #6  
Antiguo 09-01-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No me había percatado de la línea:
Código:
Pinfo:=@info;
, pero de todos modos, PInfo deja de ser un puntero a Info en la línea
Código:
GetMem(Pinfo,Buffer);
.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 12-01-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
PD: Hay alguna forma de enviar el codigo tabulado?
siiiiiiiiiii, tienes un icono que se llama wrap code tag (el simbolo de la almohadilla del teclado) no veas lo que se agradece un codigo identado
Responder Con Cita
  #8  
Antiguo 25-01-2004
Amilius Amilius is offline
No confirmado
 
Registrado: ene 2004
Posts: 138
Poder: 0
Amilius Va por buen camino
¿Donde está el famoso ícono "wrap code tag"?

Test:

procedure TFMain.CmbArtefactoChange(Sender: TObject);
var id_nuevo:byte;
begin
id_nuevo:=CmbArtefacto.ItemIndex;
with Archivo.Artefactos[CmbComercio.itemindex][posicion] do
begin
id:=id_nuevo;
modificador:=DefinirModificador(id_nuevo,posicion);
end;
IconoArma.repaint;
PaintBox.repaint;
end;

Al editarlo lo veo identado, pero no así en modo "lectura"..

Última edición por Amilius fecha: 25-01-2004 a las 23:05:58.
Responder Con Cita
  #9  
Antiguo 25-01-2004
Amilius Amilius is offline
No confirmado
 
Registrado: ene 2004
Posts: 138
Poder: 0
Amilius Va por buen camino
Cita:
Empezado por delphi.com.ar
A simple vista te puedo decir que estas asignando memoria al puntero Pinfo, pero luego no lo usas para nada. Sigues usando info...

Saludos!
Lo que pasa es que GetMem le vale un comino que Pinfo apunte a Info o a otra cosa, Getmem usa a Pinfo como variable, como un lugar para guardar algo, no le importa el valor que tenía almacenado.

Si quieres "agrandar" a Info tendrás que crear otro buffer, copiar los datos de Info al nuevo buffer (si lo necesitas) y utilizar el nuevo buffer y olvidarte de Info, por que como dijiste es una estructura (que supongo que NO la creaste dinámicamente (reservando memoria con otro getmem)) y esas no son redimensionables.

P.D. Getmem reserva memoria, no "redimensiona" estructuras referenciadas por un puntero.
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


La franja horaria es GMT +2. Ahora son las 13:31:49.


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