Pascal/Turbo Pascal - Extraño comportamiento: directorios en Windows XP

 
Vista:

Extraño comportamiento: directorios en Windows XP

Publicado por Diego Romero (996 intervenciones) el 19/07/2007 04:18:24
Quiero compartir con ustedes esto que acabo de descubrir.

Hace tiempo (estoy hablando de años, más de 10...) tengo hecho una aplicación que tiene un instalador en Turbo Pascal. Al ser una aplicación DOS no requiere una gran máquina para funcionar, ni siquiera Windows. Todo ha ido bien hasta que me han contactado de un cliente que se vió en la necesidad de reinstalar la aplicación pero esta vez sobre Windows XP, diciéndome que la aplicación no se instala como debería.

Extrañado yo por esto, siendo que durante años tanto la aplicación como su instalador ha funcionado correctamente, sospecho del sistema operativo cayendo en la cuenta que nunca lo había probado.

Después de pasarme un buen tiempo debugeando sobre Windows XP llego a la conclusión de que el procedimiento ChDir(); (cambiar directorio) de Turbo Pascal no funciona bien en XP. Asombrado por esto realizo unas cuantas pruebas y me entero que el cambio del directorio actual en Windows XP no funciona como lo hace MS-DOS o los otros Windows. Esto es lo que encontré

Parámetro MS-DOS Win98 WinXP
c:\temp\temp Válido Válido No válido
\temp\temp\ Válido Válido No válido
\temp\temp Válido Válido Válido
\ Válido Válido No válido

Deduzco que para usar ChDir(); sobre Windows XP no se puede poner la letra de unidad ni dejar la \ al final del path! de hacerlo, siempre resulta en un "path not found" aunque el path sí existe.

Para corroborar esto escribí un programa de prueba en otro lenguaje para DOS, COBOL con idéntico resultado.

Sin embargo haciendo un archivo de procesamiento por lotes (.BAT) sí funciona la segunda forma de la tabla más no la primera ni la última (no muestra error pero no cambia el directorio tampoco).
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:Extraño comportamiento: directorios en Windows

Publicado por micropais (209 intervenciones) el 19/07/2007 09:42:59
Saludos Diego Romero .

Interesante ....

Antes de hacer nada decir que microsoft ya avisó de no dar soporte al D.O.S
aunque parece no ser cierto.
ya he probado lo que dices y a mi personalmente me funciona.
revisa tu code antiguo , comprueba que la ruta a la que accedes esta creada
desde es DOS (lo veras en mayusculas) mira si estas usando CHDIR o
GetCurDir.
GetCurDir tiene la misma funci¢n que GetDir pero necesita un string
terminado en nulo como argumento en lugar de un string estilo Pascal.
- osease un PCHAR.-
_______________________________________________________________
ahi va el code que a mi, si me funciona , pruebalo , si no te funciona , contacta
conmigo , para intentar ver posibles soluciones , quiero saber si se trata de TP
o del DOS incluido en XP. lo mismo se trata de otra cosa -por ejemplo un parche
o una actualizacion del XP. prueba primero el code y comenta tu resultado..
NOTA : he creado tres directorios especiales para ello:

'c:\temporal\temporal' esta en FAT
'd:\temporal\temporal' esta en NTFS
'e:\temporal\temporal' esta en NTFS
¡ y en los tres ejemplos Funciona !
______________________________________________________________

procedure change_dir(path:string);
var error:integer;
begin
{$I-}
{ Obtiene el nombre del directorio de la l¡nea de comandos }
ChDir(path);
error:=IOResult;
{$I+}
if error <> 0 then
begin
Writeln('Directorio no encontrado:',error); { ¿cual ERROR? }
end else
begin
writeln(' Cambio de directorio ok');
end;

end;
var actual:string;

{///////////////////////////////////////////////////////////////////////}

begin

change_dir('c:\temporal\temporal');
getdir(0,actual);
writeln('directorio actual ', actual);

readln;
end.
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:Extraño comportamiento: directorios en Windows

Publicado por micropais (209 intervenciones) el 19/07/2007 09:52:08
subrayo:
_______________________________________________________________

mira que la ruta a la que accedes está creada desde el propio DOS , deberas ver
la nueva RUTA en mayusculas.
_______________________________________________________________
NOTA:
- puede haber un conflicto con los nobres largos de archivo en tal caso
- no deberia suceder si te cambias a FREE-PASCAL para windows.
usando el mismo code antiguo.

SALUDOS de nuevo.
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:Extraño comportamiento: directorios en Windows

Publicado por Diego Romero (996 intervenciones) el 19/07/2007 19:02:36
Sí, obvio que las pruebas las hice con un directorio que existe. El instalador me fallaba precisamente porque luego de crear los directorios correspondientes tengo que cambiar a ellos para continuar la instalación, en todos los casos tuve que remover la "\" al final del nombre que en su momento lo agregué por omisión para no complicar la copia de archivos.

El tema de los nombres largos ya lo había tenido en cuenta, tengo una rutina que verifica que el path no contenga nombres largos ni caracteres inválidos ya que es el usuario el que debe escribir el nombre del path de instalación.

De todas formas ya lo solucioné pero puse este mensaje por si a alguien le pasa lo mismo.
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:Extraño comportamiento: directorios en Windows

Publicado por GEERGON (14 intervenciones) el 19/07/2007 20:03:08
Hola!

Muchas gracias, Diego, por pensar en compartir la información con nosotros. A mi este ttema de compatibilidad me gusta mucho. Y esta de mas decir que Microsoft hace tiempo que quebro algunos detalles de compatibilidad. Seria interezante llegar a la raiz del porque a Diego le sucedio esto, voy a hacer mi propio test. Si encuentro algo lo comparto tambien.

Muchas gracias por su tiempo!
Atentamente: Ge-ergon
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:RE:RE

Publicado por micropais (209 intervenciones) el 19/07/2007 21:26:26
Lo cierto es que a fecha de hoy ni Microsoft ni Borland
nos van a sacar las castañas del fuego .
__________________________________________________________

Deberemos buscar soluciones o apaños cuando empiezen a surgir estos problemas, que de echo creo que iran apareciendo a medida que pase el
tiempo.
__________________________________________________________

- Pero no soy muy Optimista ya que cualquier cambio en el DOS
o el simple echo de no soportarlo afecta al TP de borland.

- A mi personalmente aunque me FASCINA el TP7 y no lo suelto
me estoy migrando al FREE-PASCAL por si las "moscas" y de echo
ya le estoy cogiendo cariño en ambas plataformas.

He escuchado RUMORES sobre el Windows-VISTA ," que no solo, no
funcionan los programas tipo DOS", si no que ni si quiera el
propio VISTA , ademas de requerir recursos infinitos y lo ultimo
en micros y aun así anda escaso el "pobrecito". :)
lo de que no va a soportar el DOS , realmente me asusta. aunque
no creo que puedan con el , por si acaso ya migre el DOS a un CD
de auto-arranque para poder seguir en el futuro y enseñarselo a mis
nietos. JEJEJEJE ( ¡¡Jo ,abuelo!! ¿y entraba todo en un solo diskette? )

- Siempre nos quedaria volver atras usando windows 95/98/XP hasta el
año 2050 e incluso probar cosas "nuevas"-"viejas" como el "PC-DOS"
el "FREE-DOS" o incluso migracion total a LINUX.

¡¡ Si Nos abandonan !! ¿Para que Seguirlos?

lo cierto es que aun "dependo" del VENTANUCOS para otras muchas
cosas ...pero el ¡¡¡ TP-QUE-NI-ME-LO-TOQUEN !!!

Saludos a todos.
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:RE:RE

Publicado por Diego Romero (996 intervenciones) el 20/07/2007 03:15:20
Ah, en eso estoy de acuerdo, micropais. De hecho, hace años que no desarrollo nada sobre DOS, ni hablar sobre TP. Solamente lo uso para probar cosas rápidas que luego transporto a Delphi/Lázarus.

Por el momento seguiré manteniendo los programas en DOS porque hay gente que todavía los usa y no piensa cambiarlos ("¿Para qué?, si me anda bien...").

Pero la gente sigue pidiendo TP7. Es por lejos lo que más se descarga de mi página y no hay caso, Free Pascal no parece que vaya a reemplazar a TP7 en un futuro cercano como herramienta de enseñanza, porque no nos engañemos, la mayoría de los que buscan TP7 lo hacen porque los profesores les han dicho que usen ese. Me pregunto cómo se las apañan cuando se dan cuenta que con TP7 no puedes hacer "ventanas" xD.
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:RE:RE

Publicado por M@rceloL (25 intervenciones) el 20/07/2007 05:18:09
¿Cómo se las apañan cuando se enteran que no pueden hacer ventanitas? Simple, se bajan el Visual C++ 6... Porque como se llama "Visual" y es C++... Tendrías que verle la cara a algunos de ellos: se quieren morir cuando ven lo que es en realidad...
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:¿Por que usar TP7 ?

Publicado por micropais (209 intervenciones) el 20/07/2007 11:31:40
Saludos, creo que me salgo del TEMA pero me quedo agusto...

Tambien conozco LAZARUS , y no me convence ,trata de copiar un texto de abajo a arriba y veras un desbordamiento de segmento ... ,ademas aun anda en pañales,pero eso es otro tema.

Si quieres programar en plan ventanas , se puede hacer con cualquier Visual
Visual Basic (.NET)
Visual C# 2005
Visual C++ 2005
Visual J# 2005
Visual Web Developer 2005 Express Edition
Visual InterDev
Visual J++
Visual FoxPro
Visual SourceSafe

e incluso Delphi (quien tenga la licencia,
- no se si 1/2 kilo es asequible para muchos. 3.000€ cuesta la broma).

_________________________________________________________

¿Por que usar TP7 ?

__________________ Mi opinion personal __________________

Dedicado a todos aquellos que no ven mas allá que las "VENTANAS" (pequeño saltamontes)...
Todos estos lenguajes y otros muchos mas crean codigos bastante profesionales ,y bonitos
(de echo es lo que la gente demanda hoy en dia , los "VISUAL" ).

- A la hora de programar son los peores que he visto en mi vida (no por el codigo generado)
si no por la forma de tener que programarlos.

- Prefiero PLASMAR una IDEA bajo PASCAL en un -codigo limpio- y pulirlo mil veces en un
codigo bastante simple sin despistarme por la maleza de codigos extra que conllevan
los anteriores compiladores donde el propio BOSQUE no te deja ver el arbol
y luego TRADUCIRLO a VBASIC ò cualquier otro (bueno en C cometo muchos errores jejeje).

p.e:
El uso de punteros no está implementado en VBASIC pero se puede emular usando matrices
esto en VBASIC tardé mas de un mes sin poder solucionarlo - me despistaba viendo objetos incrustables com Cristal report etc...-
sin enbargo bajo pascal en
tan solo un par de dias -plasmé la idea- y la traduje a VBASIC usando las APIS de WINDOWS
asi cree un programa que recorre todo el arbol de directorios (mas de 9.000 carpetas con mas de 60.000 ficheros) incluidos los nombres raros de archivos entradas como {234850151902390bsdf} de archivos con sus variantes de proteccion incluidas (muchas etiquetas de volumenes en vez de archivos )...valido para recorrer cualquier dispositivo WINDOWS como CD DVD USB e incluso RED . (de eso se encarga el propio windows jejejej).
¡¡¡ Vamos la envidia de cualquier antivirus !!!

- Todo esto no hubiera sido posible crearlo sin antes tener las cosas claras -

- no solo se trata de copiar un codigo -
TP me aydua a entender, a ver el funcionamiento de las cosas p.e
algoritmos de ordenacion u otros como BRESENHAM en dode en otros lenguajes solo veo letras , en TP los asimilo mentalmente.

¡¡¡ Quizas, esto solo me ocurra a mi !!!

________________________________________________

... para eso uso TP7 ,¡¡¡ Para PENSAR !! .
...luego translado la idea a cualquier otro lenguaje y aprendo de él
________________________________________________

Espero que por lo menos el Lenguaje Pascal sease con cualquier
compilador (LAZARUS p.e con sus ventanitas ) perdure de por vida.

SALUDOS a todos.
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