Power Builder - los límites de pb 10 ???

 
Vista:

los límites de pb 10 ???

Publicado por miguell (153 intervenciones) el 24/10/2009 23:09:48
Hola,

habiendo visto que tengo problemas con la API de windows ( en powerbuillder 5 no en 10 sí ...)

Function boolean ReadFile ( &
ulong hFile, &
Ref blob lpBuffer, &
ulong nNumberOfBytesToRead, &
Ref ulong lpNumberOfBytesRead, &
ulong lpOverlapped &
) Library "kernel32.dll"

He visto que existe la nueva función en powerbuilder :
FileReadEx
que si no me equivoco permitiría leer archvios grande de golpe. Tengo un archivo (mpg) de unos 235 MB y peta!

he comprobado hasta qué tamaño va bien y me sale un tamaño máximo de 117.378.998 bytes
a alguién le pasa lo mismo?

blob Emp_Id_Pic
string lst
//li_fnum = FileOpen(ls_winfile, StreamMode!,read!, shared!, append!)
lul_length = filelength(ls_winfile)
ulong li
for li = 117378990 to lul_length step 1
li_fnum = FileOpen(ls_winfile, StreamMode!,read!, shared!, append!, encodingansi!)
ll_bytes = filereadEx(li_fnum, emp_id_pic, li)
fileclose(li_Fnum)
// li_fnum = FileOpen(ls_winfile, StreamMode!,read!, shared!, append!, encodingutf8!)
// ll_bytes = filereadEx(li_fnum, emp_id_pic, li)
// fileclose(li_Fnum)
// li_fnum = FileOpen(ls_winfile, StreamMode!,read!, shared!, append!, encodingutf16be!)
// ll_bytes = filereadEx(li_fnum, emp_id_pic, li)
// fileclose(li_Fnum)
//li_fnum = FileOpen(ls_winfile, StreamMode!,read!, shared!, append!, encodingutf16le!)
// ll_bytes = filereadEx(li_fnum, emp_id_pic, li)
// fileclose(li_Fnum)
if ll_bytes > 0 then
w_abm_frame.setmicrohelp( string(ll_bytes, "#,##0"))
else
exit
end if
next

un saludo,
Miguel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:los límites de pb 10 ???

Publicado por miguell (153 intervenciones) el 25/10/2009 12:04:05
bueno,
me auto-respondo un poco:

parece tener que ver todo con la memoria RAM que tengo disponible. Igual que otro problema que tenía para asignar los resultados a un blob, mediante blobedit(). (tengo un acer -one con 1 gb de memoria).

blobedit por lo visto exige que tu variable blob ya está inicializado (ya le has rellenado con por ejemplo una cantidad de espacios en blanco).

declaré una variable blob de la siguiente forma:

blob { ... tamaño inicial} }lblob_miblob.

logré poner 466000000 (466 mb) para 'tamaño inicial' pero entonces me dejaba de funcionar el límite del bloque de lectura que encontré en anterior post de 117.378.998 bytes.

Puede que me equivoque, pero a mi me huele a que tienes que tener RAM real libre para estas cosas y que no basta con tener una memoria virtual suficientemente grande.

habría que ver cómo obtener la memoria libre (mediante API ?) y ver cuál parte de ella es la relevente ya que hay más tipos de 'memoria libre' si no me recuerdo mal

esto sólo por si a alguién le pasa lo mismo.

saludos,
Miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar