Holas.. te comento lo que hice y funciona en 16 maq con w95, w98, nt, 2000 sin problemas (hasta ahora)
en el ejecutable del prg agrego esto...
Código Delphi
[-]
var
i : TIniFile;
begin
i := TIniFile.Create('Servidor.ini');
i.ReadString('Datos','Servidor', Servidor );
i.Free;
frmInicio := TfrmInicio.Create(Application);
frmInicio.Show; frmInicio.Update;
Application.Initialize;
en el formulario de inicio agrego esto
Código Delphi
[-]
function ALaPapelera(Fichero:string):boolean;
var
FileOp: TSHFileOpStruct;
begin
if FileExists(Fichero)then
begin
FillChar(FileOp,SizeOf(FileOp),#0);
With FileOp do
begin
Wnd:= Application.Handle;
wFunc:= FO_DELETE;
pFrom:= PChar(Fichero+#0#0);
fFlags:= FOF_SILENT or FOF_ALLOWUNDO or FOF_NOCONFIRMATION;
end;
Result:= (ShFileOperation(FileOp)=0);
end else
Result:=False;
end;
procedure TfrmInicio.FormCreate(Sender: TObject);
begin
if ALaPapelera ('c:\PDOXUSRS.NET') then
ShowMessage('Ha sido borrado con éxito el archivo .NET');
if FileExists('c:\windows\Servidor.ini') = False then
begin
frmPath := TfrmPath.Create(Application);
try
frmPath.ShowModal;
finally
frmPath.Free;
end;
end;
en algun evento (el mio en un boton) creo el ini donde eRuta es un edit que debe llenar el usuario con los datos precisamente de la localización de la tabla
Código Delphi
[-]
var
i : TIniFile;
Servidor : String;
begin
Servidor := eRuta.Text;
i := TIniFile.Create('Servidor.ini');
i.WriteString('Datos','Servidor', Servidor );
i.Free;
end;
uso un solo Tsession para tablas y querys... en la propiedad de tablas y querys ni DataBaseName ni Alias.
En el evento oncreate de tablas y querys digo que lea el ini de alli saco la propiedad DatabAseName de cada componente
Código Delphi
[-]
procedure TdmTablas.DataModuleCreate(Sender: TObject);
var
i : TIniFile;
Ruta : String;
begin
i := TIniFile.Create('Servidor.ini');
Ruta := i.ReadString('Datos','Servidor', '');
i.Free;
Session1.NetFileDir := Ruta;
Session1.Active := True;
dbEscuela.DataBaseName := Ruta;
dbEscuela.Connected := True;
tblDatosPersonales.DataBaseName := Ruta;
Antes de ejecutar borra todos los *.net de cada maquina y los *.lck donde este alguno... luego ejecutas y no tendrás problema.. el ini creado teoricamente sera escrito una sola vez ya que primero veo si esta y si es asi No paso al frmPath para crearlo (esto por si se borra o lo borran)
Bueno te comento que seguramente abra otras formas pero es la que hice