FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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 |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
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. |
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
No me había percatado de la línea:
Código:
Pinfo:=@info; 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. |
#7
|
||||
|
||||
Cita:
|
#8
|
|||
|
|||
¿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. |
#9
|
|||
|
|||
Cita:
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. |
|
|
|