Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Type of expression must be BOOLEAN (https://www.clubdelphi.com/foros/showthread.php?t=83731)

chuli17 22-07-2013 07:35:39

Type of expression must be BOOLEAN
 
Hola buenas, aber si alguien me echa una mano, en la primera linea de ese codigo me da error "Type of expression must be BOOLEAN" y con mas vueltas que le doy nose porque... lo agradeceria muchisimo si me echais una mano :confused::confused:

Código Delphi [-]
if Buscar(Lista,s + 'Nueva carpeta',Mascaras)then
      Form2.Show;
      Form2.RichEdit1.Lines.Add(Lista.Text);
      else
      ShowMessage('Nada Encontrado');

oscarac 22-07-2013 07:55:27

puedes colocar el código de la función buscar?

ElKurgan 22-07-2013 07:55:59

¿Y como está definida la función "Buscar"?

Saludos

cloayza 22-07-2013 08:02:05

Creo que el código que escribiste tiene algunos problemillas..

Código Delphi [-]
if Buscar(Lista,s + 'Nueva carpeta',Mascaras)then
begin
      Form2.Show;
      Form2.RichEdit1.Lines.Add(Lista.Text);
end
else
      ShowMessage('Nada Encontrado');

Saludos

oscarac 22-07-2013 08:03:04

Cita:

Empezado por cloayza (Mensaje 464232)
Creo que el código que escribiste tiene algunos problemillas..

Código Delphi [-]
if Buscar(Lista,s + 'Nueva carpeta',Mascaras)then
begin
      Form2.Show;
      Form2.RichEdit1.Lines.Add(Lista.Text);
end
else
      ShowMessage('Nada Encontrado');

Saludos

eso iba a indicarle, te me adelantaste

chuli17 24-07-2013 21:27:53

Hola buenas aqui esta la funcion buscar, y gracias a todos por responder.

Código Delphi [-]
procedure Buscar(Lista: TStringList; Path, Mascara: String); overload;
var
  SR: TSearchRec;
begin
  Path:= IncludeTrailingPathDelimiter(Path);
  if FindFirst(Path + '*.*', faAnyfile, SR) = 0 then
  repeat
    if (SR.Name <>  '.') and (SR.Name <> '..') then
      if (SR.Attr and faDirectory) = faDirectory then
        Buscar(Lista,Path+SR.Name,Mascara);
  until FindNext(SR) <> 0;
  FindClose(SR);
  if FindFirst(Path + Mascara, faAnyfile, SR) = 0 then
  repeat
    if (SR.Name <>  '.') and (SR.Name <> '..') then
      if (SR.Attr and faDirectory) <> faDirectory then
        Lista.Add(Path + SR.Name);
  until FindNext(SR) <> 0;
  FindClose(SR);
end;

procedure Buscar(Lista: TStringList; Path: String; Mascaras: TStringList); overload;
var
  i: Integer;
begin
  for i:= 0 to Mascaras.Count - 1 do
    Buscar(Lista,Path,Mascaras[i]);
end;


procedure TForm1.FormCreate(Sender: TObject);

var
   drive : Char;
   tipo : Integer;
begin
   for drive:= 'A' to 'Z' do
   begin
      tipo := GetDriveType(PChar(drive+':\'));
      if tipo <> 0 then
       case tipo of
         DRIVE_REMOVABLE: Combobox1.Items.Add(drive + ':\' + '   (Disco Extraible)');
         DRIVE_FIXED: Combobox1.Items.Add(drive + ':\' + '   (Disco Duro)');
         DRIVE_RAMDISK: Combobox1.Items.Add(drive + ':\' + '   (Ram Disk)');
       end;//Case
   end;
   end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Lista: TStringList;
  Mascaras: TStringList;
  s: string;
begin
  Lista:= TStringList.Create;
  try
    Mascaras:= TStringList.Create;
    try
      Mascaras.Add('1.DAT');
      Mascaras.Add('2.DAT');
      Mascaras.Add('3.DAT');
      s:= Copy(Combobox1.Text,1,3);
      if Buscar(Lista,s + 'Nueva carpeta',Mascaras)then // Aqui en esta linea da el error
      begin
      Form2.Show;
      Form2.RichEdit1.Lines.Add(Lista.Text);
      end
else
      ShowMessage('Nada Encontrado');
    finally
      Mascaras.Free;
    end;

  finally
    Lista.Free;
  end;
end;

TiammatMX 24-07-2013 21:42:51

Pues es claro..., Buscar primeramente debe ser una FUNCIÓN (no un procedimiento) y ésta función debe regresar un valor booleano o lógico para que la condición que la llama sea correcta.

ecfisa 24-07-2013 23:21:55

Hola chuli17.

Tal como te indica tiammat un procedimiento no devuelve valor alguno.

Lo que podrías hacer es:
Código Delphi [-]
...
  Buscar(Lista, s + 'Nueva carpeta', Mascaras);
  if Lista.Count > 0 then // Si encontro alguna coincidencia...
  begin
     ...

Saludos :)


La franja horaria es GMT +2. Ahora son las 04:12:30.

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