Pascal/Turbo Pascal - peticion de Diego...

 
Vista:

peticion de Diego...

Publicado por Raymond Calderon (20 intervenciones) el 27/07/2002 13:07:32
Te acuerdas te dije que me daba el acceso de negado (doserror #5) al usar el exec() y Me dijiste que te lo mandara, aqui esta...
espero que le encuentres la respuesta y me la digas..

program Ray;
uses dos,crt;
var
ruta,nombre: string;
begin
ruta:='c:\tp';
nombre:='fecha.exe';
SwapVectors;
Exec(ruta,nombre);
SwapVectors;
if DosError <> 0 then{ Error? }
WriteLn('Dos error #', DosError)
end.

Ok. Gracias
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:peticion de Diego...

Publicado por Diego Romero (786 intervenciones) el 28/07/2002 04:10:07
Ejem, tienes mal los parámetros del Exec, el primero debería ser el nombre del .exe a ejecutar mientras que el segundo deben ser los parámetros que recibirá el programa que son opcionales (lo usas si quieres).
Tu ejemplo debería ser así:
ruta:='c:\tp';
nombre:='fecha.exe';
SwapVectors;
Exec(ruta+'\'+nombre,'');
SwapVectors;
if DosError <> 0 then{ Error? }
WriteLn('Dos error #', DosError)

nota que he sumando la ruta al nombre del programa (mas la barra que has olvidado :)) y he dejado el segundo parámetro en nulo.
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

RE:peticion de Diego...

Publicado por raymond Calderon (20 intervenciones) el 29/07/2002 08:08:17
Ya lo hice como me dijiste pero ahora me da dosserror #8 (falta de memoria) pero no entiendo porque mi PC tiene 256M de memoria...
podrias explicarme?...

Gracias..
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

RE:peticion de Diego...

Publicado por pablo molucas (15 intervenciones) el 29/07/2002 18:52:43
Pascal solo usa la memoria convencional (normalmente 640 k), por tanto si sobrecargas la memoria de punteros y demas es facil quedarse sin memoria.
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

RE:peticion de Diego...

Publicado por Diego Romero (786 intervenciones) el 30/07/2002 03:01:36
Además de ese "problema" (recuerda que TP es para DOS cuando 640 Kb debían ser suficientes para todos ... palabras de Bill Gates) Turbo Pascal solo tiene 64Kb de stack, que es el lugar que ocupan las variables globales y estructuras de datos pero el procedimiento Exec() necesita mucho heap que es donde se guardan los datos dinamicos, variables que usan las funciones y procedimientos, sobre todo para guardar la tabla de vectores (que es lo que hace Swapvectors), la solución es poner una directiva de compilación que oblige a usar un stack mas chico para las variables y dejarle mas espacio a Exec, esto se hace poniendo al principio del código fuente (antes de uses y/o program)
{$M $4000,0,0 }
Eso le da 16 Kb de stack.
Si todo esto sigue siendo una limitación muy fuerte para tí deberías considerar pasarte a un compilador de 32 bits para DOS que usan memoria plana, con esto podrás usar libremente tus 256 Mb de RAM, algunos compiladores pueden ser FreePascal, TMT Pascal, Virtual Pascal, etc...
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

RE:peticion de Diego...

Publicado por raymond Calderon (20 intervenciones) el 30/07/2002 10:04:18
Ya lo hice como me dijiste pero ahora me da dosserror
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