Ver Mensaje Individual
  #13  
Antiguo 11-03-2005
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Reputación: 20
Pablo Carlos Va por buen camino
Talking

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 [-]
// al uses agrega inifiles a todos los form donde leas o escribas un ini
// que hago aqui? simplemente leo un ini
var
  i : TIniFile;
begin
   i := TIniFile.Create('Servidor.ini');
   i.ReadString('Datos','Servidor', Servidor );
   i.Free;
  frmInicio := TfrmInicio.Create(Application);
  frmInicio.Show; //Formulario de presentacion
  frmInicio.Update;
  Application.Initialize;
en el formulario de inicio agrego esto
Código Delphi [-]
//Funcion para borrar el archivo .net
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);
//en este evento si el archivo ha sido borrado ... mensaje
// si no existe el ini llamo a otro form donde indico la ruta del servidor o la
// ruta local
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
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
Responder Con Cita