Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Saber si se esta ejecutando windows o linux (https://www.clubdelphi.com/foros/showthread.php?t=74571)

vivamotos 27-06-2011 10:55:13

Saber si se esta ejecutando windows o linux
 
Buenos días,

Tengo el problema en directorios cuando ejecuto mi .exe, hecho en c++ builder, en Linux.

Es por eso, que quisiera saber como puedo saber si estoy en linux o en windows a traves de alguna función o algo, para controlar los paths de una forma u otra.

Grácias.

Casimiro Notevi 27-06-2011 11:15:17

¿Un exe hecho en c++builder en linux?

vivamotos 27-06-2011 12:07:56

.exe hecho en c++ builder en windows
 
Si un .exe hecho en c++ builder en windows y luego ejecutado en linux con wine.

Casimiro Notevi 27-06-2011 12:49:14

Supongo, y repito lo de supongo, que si estás ejecutando el programa desde wine entonces estará "aislado" del entorno y no sabrá que se está ejecutando realmente en un linux.

Ñuño Martínez 27-06-2011 13:26:47

Cita:

Empezado por Casimiro Notevi (Mensaje 404888)
Supongo, y repito lo de supongo, que si estás ejecutando el programa desde wine entonces estará "aislado" del entorno y no sabrá que se está ejecutando realmente en un linux.

Sí y no. En realidad es posible saber si está ejecutando en Wine+Linux. Incluso es posible saber si está ejecutando en un Windows instalado en una máquina virtual. Casi todos los sistemas operativos incluyen métodos para obtener información del sistema en el que se están ejecutando: microprocesador, memoria, discos, etc., así como la versión del sistema operativo. Al preguntarle a Wine este responde "Wine + Linux" (no conozco la respuesta exacta, pero se me entiende ;)). Claro que se puede configurar Wine para que engañe al sistema y le diga que es un Windows (en el peor de los casos, modificas el código fuente de Wine, recompilas... :rolleyes:).

De todas formas, no es necesario preguntar en qué sistema se está ejecutando para configurar las rutas de los archivos. En FreePascal existen una serie de funciones que hacen el trabajo por ti, como por ejemplo la función GetTempDir que devuelve la ruta completa al directorio "temporal", o GetUserDir que devuelve la ruta al directorio del usuario (/home/<usuario> en POSIX o C:/Documents and Settings/<usuario> en Windows, etc.) y GetAppConfigFile te devuelve la ruta completa a un "archivo de configuración por defecto" para tu aplicación (/home/<usuario>/.config/<aplicacion>.cfg en POSIX, etc). No estoy seguro, pero posiblemente Delphi y Builder también tenga funciones similares, y si no existen deberíais exigir a CodeGears que las implementen, máxime cuando quieren que sus compiladores generen ejecutables para MacOS y Linux.

En el peor de los casos, basta con comprobar las variables de entorno o el registro de Windows, que sé de buena tinta que existen en Windows. Además, hacerlo así hará que tu aplicación se adapte a la configuración personalizada, ya que hay gente que cambia las rutas de los directorios del sistema por conveniencia, por ejemplo poner el directorio "Documents and settings" en otra partición o disco de forma que si tienen que reinstalar el sistema dicha información (documentos, configuraciones, etc.) no se pierda.


La franja horaria es GMT +2. Ahora son las 21:22:00.

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