![]() |
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) :confused: 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; :confused: una vez mas les agradezco mucho su ayuda. Saludos! |
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?
|
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 :)
|
A simple vista te puedo decir que estas asignando memoria al puntero Pinfo, pero luego no lo usas para nada. Sigues usando info...
Saludos! |
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? |
No me había percatado de la línea:
Código:
Pinfo:=@info; Código:
GetMem(Pinfo,Buffer); Saludos! |
Cita:
|
¿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".. |
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. |
La franja horaria es GMT +2. Ahora son las 05:51:54. |
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