Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   A call to an OS function failed ... (https://www.clubdelphi.com/foros/showthread.php?t=10478)

Xavierator 20-05-2004 13:54:51

A call to an OS function failed ...
 
Hola, me encuentro con algun cliente (no todos), que al ejecutar la aplicacion, le aparece el error:

"Error reading NombreDeUnComboBox.Items.Strings: A call to an OS function failed."

¿ Alguien sabe a que se puede deber o en todo caso que se puede hacer en el programa para intentar averiguar mas al respecto ?

Gracias, Xavierator.

marto 20-05-2004 14:31:12

Wop!

Pues nunca he visto ese mensaje, pero con los datos que das, yo creo que tiene que haber algo "roto" en los ordenadores. El error se produce al llamar a una rutina de SO y dices que solamente pasa en algunos ordenadore y encima se produce al leer la propiedad Strings de TComboBox... todo eso me hace pensar que algo está mal instalado...

Xavierator 20-05-2004 16:10:51

Ampliacion ...
 
Hola, yo tampoco habia visto el mensaje hasta ayer, pero por lo que he podido encontrar buscando el texto del mensaje a traves del google, la teoria mas aceptable, es que parece un problema de recursos de los pc's, ya que el error parece dar al crear un formulario con muchos controles de tipo tlistbox y tcombobox.

http://groups.google.es/groups?q=A+c...40dnews&rnum=1

http://groups.google.es/groups?hl=ca...ews%26rnum%3D6

Si el problema son demasiados controles en un mismo form, pues tiene solucion cambiando controles a otros forms, pero si el problema es el numero general de controles, cambiarlos de sitio no resolvera el tema.

Sabiendo esto, ¿ se os ocurre alguna solucion ?

¿ Hay alguna manera (control, api, ...) de controlar los recursos dentro de un programa en Delphi ?

Lo que en ningun queda muy claro, es si los recursos, estan ligados unicamente al sistema operativo y como los organiza o si la cantidad de memoria ram tiene algo que ver.

Saludos y gracias, Xavierator.

delphi.com.ar 20-05-2004 16:57:22

Simplemente los Items de un TString se cargan por streaming, este flujo de datos suele estar basado en funciones del SO. Evidentemente falla por algún motivo, es una lástima que no sea mas específico, pero los motivos pueden ser variados, desde errores de disco hasta problemas de privilegios.
El error aparenta producirlo el TReader que es el que lee el stream del "DFM" que queda itegrado en el EXE, no descarto que desde el código estes cargando los items mediante un LoadFormFile / LoadFromStream.

Saludos!

Xavierator 20-05-2004 17:32:35

"Resuelto"
 
Hola, no es que este resuelto, pero ya tengo el problema localizado, os cuento:

efectivamente es un problema de recursos, ya que para poder reproducirlo en un pc con un win98, simplemente he ejecutado el programa dos veces para obtener el mismo tipo de error. Lo que es mas extraño es que me digan que tambien pasa en windows xp, ya que un pc con win xp, he ejecutado el programa hasta 6 veces (ya me he cansado de ejecutarlo mas veces) para ver que ni asi falla.

Y ya he comprobado que la memoria, no afecta a los recursos disponibles ni en un win98 ni en win XP.

Saludos, Xavierator.

jgutti 02-08-2004 17:41:54

A call to an OS function failed ...
 
Hola al foro.

Xavierator, Como solucionaste este error para "A call to an OS function failed" para windows 98

guillotmarc 02-08-2004 18:05:23

Hola.

Yo también tengo este error en una rutina concreta. Siempre que se ejecuta sobre Windows 98 da ese error, y en Windows superiores funciona correctamente. Esa rutina no hace nada raro : ejecuta unos procedimientos almacenados, cierra una conexión de datos, y descarga un formulario.

No lo relacioné con los recursos de Windows, porqué en Windows 98 ocurre siempre (independientemente de si hay muchos programas cargados, o ningún otro).

Aún no lo he depurado porqué no tengo ningún Windows 98 con Delphi instalado.

Saludos.

marto 02-08-2004 18:29:43

Mirando por ahí he encontrado que el tema puede estar relacionado con un exceso de "windowed controls" (¿Como trduzco eso?). También comentan que tiene que ver con un límite lógico, con de memoria, por eso en versiones 2k/xp es más difícil que pase.
¿Puede ser que vayan por ahí los tiros?

Xavierator 03-08-2004 09:24:10

Comentarios
 
Hola, hace tiempo que no me pasaba por el foro y acabo de ver que el hilo ha ido creciendo.

Pues bien, el problema sigue sin solucionarse, ya que aunque yo lo pueda reproducir en un Win98 simplemente ejecutando dos veces el mismo programa, ya sea al leer, crear, ... algun componente, ¿ que solucion se le puede dar a esto ?, bien habra que leerlo, crearlo, ..., por lo que no vale poner algun control de que si no puede crearlo por ejemplo, no lo haga y ya esta, ya que el programa con mensaje de error o sin, seguira sin funcionar, por lo que no se que solucion hay que darle a este tema. Teniendo en cuenta que alli donde se produce, no lo arrancan dos veces y supongo que se debera a otros programas cargados en memoria que hacen que simplemente ejecutando uno solo de los mios ya de el error, si pudiera, me gustaria ver el administrador de procesos o de recursos de windows para ver como va el PC antes y mientras se arranca mi programa, pero esto no puede ser, si alguien tienen alguna idea mejor, pues adelante...

Intente buscar alguna herramienta que permitiera saber si hay suficientes recursos o no para intentar controlar algo, pero simplemente como control para que el mensaje de la aplicacion sea entendible no como el de ahora ni como solucion, y encontre en la Delphi Super Page las herramientas MSIC.zip (MiTeC System Information), pero no las he puesto en practica a exceppcion del ejecutable demo para que la informacion que da.

Saludos, Xaviaretor.

marto 03-08-2004 10:10:47

Wop!

¿Tienes muchos forms como autocreate? Si los forms tienen muchos controles, es posible que, al tenerlos todos creados aunque invisibles, excedas el límite de win98.

Xavierator 03-08-2004 10:39:38

El problema, en mi caso, no son muchos forms, sino todo lo contrario, unicamente que hay uno de los pocos que tengo, que por necesidad, tiene muchisimos TComboBox, por lo que supongo que si Windows no tiene suficientes recursos, pues no puede crear todos los componentes, pero cuando esto pasa en poquisimos casos, quiere decir que no es tanto el programa en si mismo, sino alguna caracteristica o condicion de windows o los programas que hay en ese momento.

Saludos, Xavierator.

marto 03-08-2004 12:45:03

Cita:

Empezado por Xavierator
quiere decir que no es tanto el programa en si mismo, sino alguna caracteristica o condicion de windows o los programas que hay en ese momento.

En eso estamos totalmente de acuerdo. De todas maneras, si excedes el límite de la máquina o, en este caso del sistema operativo... no veo más solución que cambiarlo, o eso, o te las apañas para "descargar" el form de tanto combo!


La franja horaria es GMT +2. Ahora son las 22:31:16.

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