PREGUNTAS CONTESTADAS - Pascal/Turbo Pascal

 Hay un total de 203 Preguntas.<<  >> 

    Pregunta:  10243 - CUADRO MAGICO PASCAL
Autor:  JOSE ORTEGA ORTEGA
DESEO SABER COMO HACER UN CUADRO MAGICO EN PASCAL, ESOS QUE DA LO MISMO SI SE SUMA PARA ARRIBA COMO PARA ABAJO HACIA LOS LADOS O DIAGONALMENTE.

LES AGRADECERIA SU AYUDA.
  Respuesta:  Nelson Quiñones López
Yo tengo el código para el cuadrado mágico, si quieres te lo mando.

de todos modos la idea es esta 3x3

comenzar por el número uno (puede ser cualquiera pero en forma ordenada), subir uno arriba (como arriba no hay casillas, ir abajo en la misma dirección) y otro a la derecha poner 2, luego uno arriba y otro a la derecha (como a la derecha no hay casillas, ir a la izquierda) y poner el número 3, ir arriba y luego a la derecha (como ya está ocupado, retornar a lugar donde esta el 3 y bajar una casilla) poner el número 4, y así sucesivamente (UNO ARRIBA Y OTRO A LA DERECHA). Puedes hacer con cualquier cantidad de casillas, siempre y cuando sea de dimensión cuadrada (matriz cuadrada) 3x3, 5x5 o 1000x1000. Cuando comiencesa por un número utilizar la secuencia en forma ordenada y ascendente 1,2,3,4,5, etc. o puedes utilizar multiplos también (del 3 por ejemplo) 3,6,9,12,etc

2 1 6
3 5 7
4 9 2

la suma en cualquier dirección es 15.

El código tu puedes hacerlo con un poco de paciencia...suerte!!!

    Pregunta:  10778 - COMO EJECUTAR UN FICHERO *.EXE DESDE UN PROGRAMA PASCAL
Autor:  ERNEST SURIA RUIZ
Tengo necesidad de jecutar un fichero EXE situado en el DOS desde un programa escrito en pascal. Para entrar en el directorio especificado desde pascal no tengo problema, pero luego no consigo ejectar el fichero EXE. Gracias
  Respuesta:  Diego Romero
Hablando siempre de Turbo Pascal 7.0 la ayuda del procedimiento estandar Exec() de la unidad DOS es muy clara. Pero por las dudas aqui repito el codigo de ejemplo.

{$M $4000,0,0 } { 16K stack, no heap }
uses Dos;
var
ProgramName, CmdLine: string;
begin
Write('Program to Exec (full path): ');
ReadLn(ProgramName);
Write('Command line to pass to ',
ProgramName, ': ');
ReadLn(CmdLine);
WriteLn('About to Exec...');
SwapVectors;
Exec(ProgramName, CmdLine);
SwapVectors;
WriteLn('...back from Exec');
if DosError <> 0 then{ Error? }
WriteLn('Dos error #', DosError)
else
WriteLn('Exec successful. ',
'Child process exit code = ',
DosExitCode);
end.
  Respuesta:  Dabiz Spuch Calvar
Sólo tienes que usar la instrucción Exec. Es necesaria reducir el tamaño del Heap para que pueda ejecutar el programa. Además debes llamar swapvectors antes y después de Exec para que no se confundan los manejadores de interrupciones.

Ejemplo:

{$M 50000,0,0} { Reserva 50000 bytes de la pila }
USES Dos,Crt;

PROCEDURE Inicio;
VAR LineaParametros : string;
DirString : string;
Dir : integer;
BEGIN
FOR Dir := 1 TO 255 DO
BEGIN
Str (Dir,DirString);
LineaParametros := '-a ' + ParamStr(1) + DirString;
SwapVectors;
Exec ('c:\windows\nbtstat.exe',LineaParametros);
SwapVectors;
END
END;

BEGIN Inicio END.

    Pregunta:  10825 - COMO FORMATEAR UN DISCO FLEXIBLE DESDE UN PROCEDIMIENTO
Autor:  ALEJANDRO ZUÑIGA SOLIS
NECESITO LLAMAR DESDE UN PROCEDIMEINTO DE TURBO PASCAL EL COMANDO FORMAT DEL DOS PARA FORMATEAR UN DESCO DE 3 Y MEDIA.ESPERO RESPUESTA YA QUE ES LA ÚNICA PARTE DEL PROYECTO FINAL QUE ME HACE FALTA PARA TERMINAR ESTE CUATRMESTRE.
  Respuesta:  Diego Romero
Lee la respuesta a la pregunta 10778 e invoca el comando format con los parametros que necesites con el procedimiento Exec().
  Respuesta:  Dabiz Spuch Calvar
Con la instrucción Exec puedes ejecutar cualquier programa desde pascal. Acuerdate de llamar a swapvectors antes y después de exec para evitar problemas con los manejadores de interrupciones. Además deberías reducir el tamaño de Heap para tener más memoria en la pila para poder ejecutar la aplicación (FORMAT.EXE). Esto último con {$M }

    Pregunta:  10853 - DETENER UNA APLICACIÓN
Autor:  Adolfo Acosta
¿Como puedo detener un programa que se queda ciclado en TP7?
En versiones anteriores lo hcia con
En Tp7 no se detiene.
  Respuesta:  Dabiz Spuch
Si te refieres a detenerlo por código prueba con halt(). Si te refieres a detener un programa en ejecución desde el entorno de desarollo de TP, debería de funcionarte pulsando Contro+Break o Control+C o Control+K

    Pregunta:  11062 - TEXTO DIFERENTE EN DOS Y WINDOWS
Autor:  Alejandro
Hola gente, tengo una duda que aunque me parece medio pelotuda nadie me pudo decir como solucionarla y me esta sacando de quicio. El tema es el siguiente: despues de grabar un .pas con el TP7 para DOS, abro el .pas en el Notepad, en el Wordpad, en el Word 97 y en todos me pasa lo mismo: me cambia algunos caracteres
Por ejemplo, los acentuados:
Si en pascal pongo >>> á é í ó ú
Cuando lo abro en Windows me aparece >>>   ‚ ¡ ¢ £
(la á acentuada aparece como un espacio en blanco)
y asi con otros caracteres. Necesito abrirlo correctamente en Word para poder convertir a Pseudocodigo e imprimirlo. Por favor, que alguien me conteste. Gracias.
  Respuesta:  Alejandro *
No, la solución para esto es usar el Ultraedit32, o algun otro editor de texto que tenga conversion de caracteres OEM a ANSI y viceversa (los tipos de caracter de DOS y Windows). Yo uso el Ultraedit y funciona perfecto.
Saludos
  Respuesta:  juan c.
bueno respecto a tu duda es muy facil si solo quieres imprimir el fuente
solo activa save as... en el menu file y guarda el archivo con extension txt asi lo podras abrir desde block de notas u otro bueno suerte
  Respuesta:  Sahid Ra Gutierrez Cruz
Hola amigo espero que esto te pueda servir:

Mira si tienes Windows 95 y lo abres con el bloc de botas no lo podras ver bien ya que tiene
una tipo de fuente predefinida la cual es Arial pero si usas el Windows 98 puesdes abrirlo con
el Bloc de notas y ahora solo cambia el tipo de fuente por la Courier y listo.

Espero que me haya dado ha enternder, ahora que si quieres escribeme y te explico
por cierto si ocupas ayuda para la creacion de pantallas ya sea en C++, Pascal7, Clipper
escribeme y te enviare un programa de 20kb que te ayuda en la creacion de las mismas.

Espero que lo que trate de esplicar me haya dado a comprender.

    Pregunta:  11438 - NUMEROS DE DOBLE PRESICION
Autor:  Luis Dominguez
Como puedo trabajar con numeros de doble presicion en turbo pascal 7.0 , pues cuando pongo la directiva de el compilador para trabajar en mode 8087 con numeros de doble presicion me envia un error "directiva de el compilador invalida". agrdecere mucho su ayuda
  Respuesta:  Dabiz Spuch Calvar
¿Qué máquina tienes? ¿un 386? si tienes una máquina antigua puede que no tenga coprocesador numérico. Si es este el caso activa la opción de emular (el coprocesador) y con esto será suficiente.

    Pregunta:  12428 - NOMBRES LARGOS EN PASCAL
Autor:  Esteban Ugalde Murillo
Mi pregunta es: Como puedo presentar nombres largos(como en Window)en Pascal en lugar de los 8 caracteres para el nombre que utiliza el DOS.
  Respuesta:  Diego Romero
Existe una forma de hacerlo pero implica que realices lecturas a bajo nivel del disco rigido, debido al "truco" que utiliza Windows para almacenar los nombres largos de los archivos.
El tema es que Windows almacena la primera parte del nombre del archivo como un nombre normal en la FAT pero cuando el nombre excede los 8 caracteres reemplaza los ultimos dos con ~1 y el resto los graba como una sucecion de nombres de 8 caracteres en la FAT pero como si fueran nombres de directorios, esto, en el viejo DOS es un error de la FAT y los ignora ya que los nombres de directorios deben estar al principio de la FAT, en un lugar reservado para ellos.

    Pregunta:  12467 - NOTACIóN ASINTóTICA("O" GRANDE)
Autor:  Alicia Aguilar
Dentro de la medición del tiempo de ejecución de un programa en pascal existe la notación asintótica conocida como o grande y quisiera saber que es esto y como y para que se utiliza. Gracias.
  Respuesta:  tp_tc tp_tc
Bueno la notacion O grande no solamente se aplica a Pascal sino se aplica todos los lenguajes computacionales.

Como bien sabemos hay diferentes algoritmos para resolver un problema y estos seran mas rapidos o mas lentos dependiendo del tipo de logica que se instrumente. Bueno la notacion O grande lo que desea es saber el rendimiento o potencia no importando la maquina y el nivel de programacion. Existen diversos libros que hablan sobre este tema, y te puedes basar en un libro de Estructuras de Datos.

    Pregunta:  12840 - PROBLEMAS AL COMPILAR UNA DLL EN LINUX CON PASCAL
Autor:  Gustavo Enriquez
No he podido compilar una libreria dinámica en pascal para linux. sale el siguiente error

Linking ejemplodll2
ejemplodll2.o: In function `program_init': ejemplodll2.o(.text+0xc): undefined reference to `hola' ejemplodll2.pas(12) Warning: Error while linking

este es el ejemplo.

El código de la libreria es :
//***************************************************************
Library ejemplodll;
uses
SysUtils;
Procedure hola; export;
Begin
Writeln('hola');
End;
exports
hola;
begin
end.
//***************************************************
El código del programa es :
//***************************************************
program ejemplodll2;
uses
SysUtils;
Procedure hola; external 'ejemplodll';
begin
Hola;
Readln;
end.

Gracias por su ayuda
  Respuesta:  jorge alvarenga
Antes que nada debes ver si el nombre del fuente de la libreria es igual al de la unidad, (o sea ejemplodll.pas) luego debes compilarla.
luego debes guardar el programa (no importa el nombre y lo compilas tambien).
Te digo esto porque ya me paso eso, que mi library se llamaba fechas y mi archivo fecha.pas .Me compilaba todo bien pero al llamarla desde un programa cliente no lo encuentra, pues el busca la libreria compilada por el nombre que das en uses
Ej.
program nada;
uses
x;
begin
end.

el buscará la libreria compilada x.ppu-x.o, etc segun tu compilador, o sea que debes guardar el fuente como x.pas y compilarlo.Tambien en el encabezado de x.pas debe decir
library x;

Espero te sirva

    Pregunta:  12894 - COMO LEER LA ETIQUETA DE UNA UNIDAD DE DISCO
Autor:  victor limachi loredo
quisiera saber como se puede leer l etiqueta de un disco desde un programa pascal
  Respuesta:  kikonmx
Utilizando la interrupción 25h que sirve para leer el sector de arranque, ya que la etiqueta se almacena en este sector, si deseas un código de ejemplo, envíame un mail

|<  <<  3 4 5 6 7 8 9 10 11 12 13  >>  >|