Crear objeto de tipo TString

Agatha
09 de Junio del 2005
¡Hola a tod@s!
Estoy haciendo una aplicación que dependiendo del usuario que acceda a ella mostrará una pantalla u otra.
Por eso quiero crear una lista de cadenas (TString o TStringList) para almacenar cada usuario y su contraseña, el código que he hecho es:
TStringList usuarios;
usuarios -> Append("admin");
for (int i = 0; i != usuarios.Count; i++)
{
if (usuarios[i] == txtUsuario -> Text) // EL USUARIO EXISTE
{
if (contrasenia[i] == txtContrasenia -> Text)
{
if (i == 0) // ES EL ADMINISTRADOR
{
frmUsuario -> Hide (); // CERRAMOS EL FORMULARIO ACTUAL
frmAdministrador -> Show (); // ABRIMOS EL FORMULARIO PARA EL ADMINISTRADOR
}
else // ES UN USUARIO NORMAL
{
frmUsuario -> Hide (); // CERRAMOS EL FORMULARIO ACTUAL
frmPpal -> Show (); // ABRIMOS EL FORMULARIO PRINCIPAL
}

Pero me da el siguiente error:
VCL style classes must be constructed using operator new.
Multiple declaration for \'usuarios\'

He puesto la librería vcl/classes.hpp y he probado poniendo el constructor, pero nada funciona.
Espero que me podáis ayudar, muchas gracias de antemano.

apgperi
09 de Junio del 2005
Hola Agatha.

El error que te da indica que una variable de tipo TStringList debe ser creada con new, es decir:

TStringList * usuarios = new TStringList();

Respecto a la forma de comprobar el usuario y contraseña te aconsejo que uses el método "Trim()" por si al usuario se le escapa algún espacio en blanco, es decir:

if (usuarios->Strings[i].Trim() == txtUsuario->Text.Trim())
{
//correcto
}

Fíjate que para acceder a los usuarios que tienes almacenados en la variable "usuarios" debes acceder a la lista de cadenas de texto de la variable (usuarios->Strings[i])

Espero haberte ayudado.
Salu2

Agatha
09 de Junio del 2005
Muchas gracias por la respuesta apgperi.