Ver Mensaje Individual
  #5  
Antiguo 30-07-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Reputación: 22
andres1569 Va por buen camino
Hola:

Como te han comentado más arriba, puede almacenarlas en un archivo .INI (da igual la extensión, puedes usar la que quieras, el caso es que uses un objeto TIniFile para leerlo), que permite almacenar los valores de la forma:

[ANIMALES]
1=Perro
2=Gato
3=Elefante
...

Puedes usar el método ReadString del objeto TIniFile:

Código:
function ObtieneNombreAnimal (Numero: Integer) : String;
begin
  with TIniFile.Create ('C:\MiArchivo.ini') do
  try
    result := ReadString ('ANIMALES', IntToStr(Numero), '');
  finally
    Free;
  end;
end;
Con esta opción accedes al archivo en disco cada vez que quieres obtener un valor.

Otra opción es que recuperes todos los valores de una sección (dentro del archivo .INI, la sección viene indicada entre corchetes []), mediante ReadSection del objeto TIniFile, lo cual copia los valores en una lista, del tipo TStrings o descendiente; de esta forma cargas los valores en memoria y su acceso es más rápido; luego puedes consultar esos valores accediendo a la propiedad VALUES de dicha lista:

Código:
ListaAnimales : TStringList;

// este procedimiento lo llamas al principio para cargar la lista
// acuérdate al cerrar el programa de liberarla: ListaAnimales.Free;
procedure CargaListaAnimales;
begin 
  if ListaAnimales = nil then
    ListaAnimales := TStringList.Create;
  with TIniFile.Create ('C:\MiArchivo.ini') do
  try
    ReadSection ('ANIMALES', ListaAnimales);
  finally
    Free;
  end;
end;

function ObtieneNombreAnimal (Numero: Integer) : String;
begin
  result := ListaAnimales.Values[IntToStr(Numero)];
end;
En este último ejemplo, hemos declarado una variable ListaAnimales del tipo TStringList. También hubieras podido usar la propiedad Items de un TListBox y cargar en dicho TListBox las cadenas, quizás sea una forma mejor que utilizar un TMemo. Sería así:

Código:
procedure CargaListaAnimales;
begin 
  with TIniFile.Create ('C:\MiArchivo.ini') do
  try
    ReadSection ('ANIMALES', ListBox1.Items);
  finally
    Free;
  end;
end;

function ObtieneNombreAnimal (Numero: Integer) : String;
begin
  result := ListBox1.Items.Values[IntToStr(Numero)];
end;
__________________
Guía de Estilo

Última edición por andres1569 fecha: 30-07-2003 a las 23:55:12.
Responder Con Cita