Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2013
Alejandro73 Alejandro73 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Valparaiso - CHILE
Posts: 132
Poder: 19
Alejandro73 Va por buen camino
Comparar un String con el contenido de un Arreglo

Estimados

Buenas tardes, tengo un arreglo definido de la siguiente manera

Código Delphi [-]
_arreglo  : array [1..2] of string = ('Opcion1','Opcion2');

En un combobox tengo opciones y obtengo en una variable de tipo string el valor del combobox.text

Posteriormente mediante un for debo comparar lo que tiene el combobox.text con los datos del arreglo _arreglo, pero al intentar comparar los valores no lo encuentra

dejo el codigo a ver si alguien me puede indicar donde esta el problema

Código Delphi [-]
for i:=0 to length(_arreglo)-1 do  if combobox.text = _arreglo[i] then Showmmesage('Posicion encontrada '+IntTostr(i));

Desde ya mucha gracias por su ayuda
__________________
Los muertos en CRISTO de sus tumbas volveran y los que vivimos en las nubes nos levantara .......
Responder Con Cita
  #2  
Antiguo 19-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Alejandro73,

Cita:
Empezado por Alejandro73
...Comparar un String con el contenido de un Arreglo...al intentar comparar los valores no lo encuentra...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ArrOpc  : Array [1..5] of String = ('Opcion1','Opcion2','Opcion3','Opcion4','Opcion5');

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
   i : Integer;
begin
   for i := 0 to 9 do
      ComboBox1.Items.Add('Opcion' + IntToStr(i+1));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   B : Boolean;

begin

   if ComboBox1.Text <> EmptyStr then
   begin

      for i := Low(ArrOpc) to High(ArrOpc) do
         if ComboBox1.text = ArrOpc[i] then
         begin
            MessageDlg('Item Encontrado en el Arreglo en la Posicion = ' + IntTostr(i),mtInformation,[mbOK],0);
            B := True;
         end;

      if not B then
         MessageDlg('Item No Encontrado en el Arreglo',mtError,[mbOK],0)

   end
   else
     MessageDlg('No se Ha seleccionado Ningún Item',mtError,[mbOK],0);

end;

end.
El código anterior compara los elementos de un arreglo con los elementos de un TComboBox.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 19-11-2013 a las 21:21:17.
Responder Con Cita
  #3  
Antiguo 19-11-2013
Alejandro73 Alejandro73 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Valparaiso - CHILE
Posts: 132
Poder: 19
Alejandro73 Va por buen camino
Estimado

Gracias por responder, ya lo habia intentado de esa manera pero al momento de comparar no encuentra la igualdad, sera que el objeto que utilizo como combobox es un TbsSkinComboBox?

Saludos
__________________
Los muertos en CRISTO de sus tumbas volveran y los que vivimos en las nubes nos levantara .......
Responder Con Cita
  #4  
Antiguo 19-11-2013
orodriguezca orodriguezca is offline
Miembro
 
Registrado: ene 2009
Posts: 221
Poder: 16
orodriguezca Va por buen camino
El for debería iniciar en 1

Hola Alejandro73,


Creo que el problema es que el arreglo _arreglo inicia en 1 y el ciclo for lo estás iniciando en cero, es decir, el ciclo for esta revisando las posiciones 0 y 1 del arreglo y no las posiciones 1 y 2. De todas formas es extraño, aunque no encuentre coincidencias, que el código se pueda ejecutar sin que salte un error de indice fuera de rango.
Responder Con Cita
  #5  
Antiguo 19-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Alejandro73,

Cita:
Empezado por Alejandro73
...ya lo habia intentado de esa manera pero al momento de comparar no encuentra la igualdad, ¿Sera que el objeto que utilizo como combobox es un TbsSkinComboBox?...
Te comento:

1- El código sugerido en el Msg #2 funciona correctamente en Delphi 7 bajo Windows 7 Professional x32.

2- Al parecer el componente TbsSkinComboBox tiene las propiedades Text y ItemIndex, por lo cual es probable que funcione de forma similar al componente TComboBox de Delphi en lo que respecta a dichas propiedades.

3- Te sugiero hacer un debug del código y verificar el valor de todas las variables relacionadas al problema.

Revisa estos links y verifica las propiedades utilizadas del componente:
Cita:
Design beautiful Delphi version control address book : http://www.bvbcode.com/code/u53nm8to-1612827

main.pas : http://en.verysource.com/code/2102925_1/main.pas.html
Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 19-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
orodriguezca,

Cita:
Empezado por orodriguezca
...es extraño...que el código se pueda ejecutar sin que salte un error de indice fuera de rango...
Si la propiedad Project -> Options -> Compiler -> Runtime errors -> Range checking esta seleccionada, el compilador verificara errores de rango en caso contrario no.

Espero sea útil

Nelson.
Responder Con Cita
  #7  
Antiguo 19-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

El código de nlsgarcia funciona correctamente. Y como utiliza las funciones Low y High lo haría del mismo modo fuera cual fuere el rango del índice declarado.

Otro ejemplo similar:
Código Delphi [-]
...
var
  Vector: array [1512..1515] of string =('Opcion1', 'Opcion2', 'Opcion3', 'Opcion4');

function IsInArray(const Value: string): Integer;
var
  i: Integer;
begin
  Result := -1;
  for i := Low(Vector) to High(Vector) do
    if Vector[i] = Value then
    begin
      Result := i;
      Exit;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  inx: Integer;
begin
  inx := IsInArray(ComboBox1.Text);
  if inx <> -1 then
    ShowMessage(Format('Encontrado en posición: %d',[inx]))
  else
    ShowMessage('No encontrado');
end;
Si no encuentra un item, me inclino a pensar que los valores del arreglo difieren en algo de los del Combo, como por ejemplo un acento...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 20-11-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Además de lo comentado ya...

(1) Ejecuta paso a paso para ver qué valen ambos valores en el momento de la comparación. Tal vez alguno incluya espacios o algo similar.
(2) Para las comparaciones de texto, también puedes utilizar AnsiCompareText (evitar mayúsculas y minúsculas diferentes).
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Guardar contenido en arreglo Tigre10 Varios 5 28-09-2010 11:48:40
Arreglo bi-tri dimensional a partir de un String egostar Varios 10 19-03-2008 19:54:54
Arreglo String Carliviris Varios 7 11-09-2006 23:26:26
Arreglo De Cadenas : String victor2023 OOP 6 19-05-2006 22:41:44
comparar con el contenido de un dbedit chipsoni SQL 6 15-12-2005 17:36:31


La franja horaria es GMT +2. Ahora son las 23:45:43.


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
Copyright 1996-2007 Club Delphi