Expression expected but nothing found que erro é este

Delphi

05/07/2005

Tenho este codigo e esta aparecendo este erro ´Expression expected but nothing found´, sei que deve esta faltando um end, mas não estou conseguindo ver onde, alguem poderia ajudar


procedure TFormBalcao2.Edit1Change(Sender: TObject);
var
Quant:Integer;
s,ABREVIADO:String;
begin
   if dm.SDS_PDVS.locate(´CODBARRAS´,FormBalcao2.edit1.text,[])= True then
      begin
        FormBalcao2.Edit3.Text:=(dm.SDS_PDVS.FieldByName(´DESCRICAO´).AsString);
         ABREVIADO:=(dm.SDS_PDVS.FieldByName(´ABREVIADO´).AsString);
        FormBalcao2.Edit4.Text:=(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
         Beep;
         IF dm.SDS_PDVS.FieldByName(´CODBARRAS´).AsString =FormBalcao2.Edit1.text then
          begin
            if FormBalcao2.Edit2.text =´´ then
               begin
                FormBalcao2.Edit2.text:=´1´;
              end;
            if FormBalcao2.Edit2.text <>´´ then
              begin
                A:=StrtoFloat(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
                B:=StrtoFloat(edit2.text);
                Soma:=(A*B);
                Total:=Total+(soma);
                Edit6.Text := FormatFloat(´R$ #,,0.00 ´, Total);
                Edit7.Text := FormatFloat(´R$ ,,0.00 ´, soma);
                ClientDataset1.Insert;
                ClientDataset1.FieldByname(´CodBarras´).AsString:=(Edit1.Text);
                ClientDataset1.FieldByname(´Codigo´).AsInteger:=(dm.SDS_Produto.FieldByName(´Codigo´).AsInteger);
                ClientDataset1.FieldByname(´Quantidade´).AsInteger:=strtoint(Edit2.Text);
                ClientDataset1.FieldByname(´Descricao´).AsString:=(ABREVIADO);
                ClientDataset1.FieldByname(´Preco´).Ascurrency:=StrTocurr(Edit4.Text);
                ClientDataset1.FieldByname(´Soma´).AsFloat:=(soma);
                ClientDataset1.FieldByname(´Total´).AsFloat:=(Total);
                ClientDataset1.Post;
                edit1.clear;
                E_Desconto.Clear;
                if FormBalcao2.Edit2.text <> ´1´ then
                  begin
                    FormBalcao2.Edit2.text:=´1´;
                  end;
              end;
          end;
      end
  else

  //--------------
    if dm.SDS_PDVS.locate(´CODIGO´,FormBalcao2.edit1.text,[])= True then
       begin
         FormBalcao2.Edit3.Text:=(dm.SDS_PDVS.FieldByName(´DESCRICAO´).AsString);
         ABREVIADO:=(dm.SDS_PDVS.FieldByName(´ABREVIADO´).AsString);
         FormBalcao2.Edit4.Text:=(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
         Beep;
         IF dm.SDS_PDVS.FieldByName(´CODIGO´).AsInteger =StrToInt(FormBalcao2.Edit1.text) then
           begin
             if FormBalcao2.Edit2.text =´´ then
                begin
                  FormBalcao2.Edit2.text:=´1´;
                end;
             if FormBalcao2.Edit2.text <>´´ then
                begin
                  A:=StrtoFloat(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
                  B:=StrtoFloat(edit2.text);
                  Soma:=(A*B);
                  Total:=Total+(soma);
                  Edit6.Text := FormatFloat(´R$ #,,0.00 ´, Total);
                  Edit7.Text := FormatFloat(´R$ ,,0.00 ´, soma);
                  ClientDataset1.Insert;
                  ClientDataset1.FieldByname(´CodBarras´).AsString:=(Edit1.Text);
                  ClientDataset1.FieldByname(´Codigo´).AsInteger:=(dm.SDS_Produto.FieldByName(´Codigo´).AsInteger);
                  ClientDataset1.FieldByname(´Quantidade´).AsInteger:=strtoint(Edit2.Text);
                  ClientDataset1.FieldByname(´Descricao´).AsString:=(ABREVIADO);
                  ClientDataset1.FieldByname(´Preco´).Ascurrency:=StrTocurr(Edit4.Text);
                  ClientDataset1.FieldByname(´Soma´).AsFloat:=(soma);
                  ClientDataset1.FieldByname(´Total´).AsFloat:=(Total);
                  ClientDataset1.Post;
                  edit1.clear;
                  E_Desconto.Clear;
                  if FormBalcao2.Edit2.text <> ´1´ then
                     begin
                       FormBalcao2.Edit2.text:=´1´;
                     end;
                end;
           end;
       end;
end;


Agradeço



[b:81f17b09be]Editando.[/b:81f17b09be]
DPinho, ao invés de utilizar cores, alterei o código inserindo a tag [code] para facilitar a leitura.
Sandra/Moderação


Dpinho

Dpinho

Curtidas 0

Respostas

Beppe

Beppe

05/07/2005

O jeito é ir tabulando os comandos até achar o problema. Se for um end no meio, receio que vc terá que parar para entender o que o código faz, para inserí-lo na posição certa.


GOSTEI 0
Sandra

Sandra

05/07/2005

Não me atentei a cada linha do código, apenas usei a identação para facilitar a identificação dos blocos.

Tente assim:
procedure TFormBalcao2.Edit1Change(Sender: TObject);
var
  Quant:Integer;
  s,ABREVIADO:String;
begin
  if dm.SDS_PDVS.locate(´CODBARRAS´,FormBalcao2.edit1.text,[])= True then
    begin
      FormBalcao2.Edit3.Text:=(dm.SDS_PDVS.FieldByName(´DESCRICAO´).AsString);
      ABREVIADO:=(dm.SDS_PDVS.FieldByName(´ABREVIADO´).AsString);
      FormBalcao2.Edit4.Text:=(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
      Beep;
      IF dm.SDS_PDVS.FieldByName(´CODBARRAS´).AsString =FormBalcao2.Edit1.text then
        begin
          if FormBalcao2.Edit2.text =´´ then
              FormBalcao2.Edit2.text:=´1´;
          if FormBalcao2.Edit2.text <>´´ then
            begin
              A:=StrtoFloat(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
              B:=StrtoFloat(edit2.text);
              Soma:=(A*B);
              Total:=Total+(soma);
              Edit6.Text := FormatFloat(´R$ #,,0.00 ´, Total);
              Edit7.Text := FormatFloat(´R$ ,,0.00 ´, soma);
              ClientDataset1.Insert;
              ClientDataset1.FieldByname(´CodBarras´).AsString:=(Edit1.Text);
              ClientDataset1.FieldByname(´Codigo´).AsInteger:=(dm.SDS_Produto.FieldByName(´Codigo´).AsInteger);
              ClientDataset1.FieldByname(´Quantidade´).AsInteger:=strtoint(Edit2.Text);
              ClientDataset1.FieldByname(´Descricao´).AsString:=(ABREVIADO);
              ClientDataset1.FieldByname(´Preco´).Ascurrency:=StrTocurr(Edit4.Text);
              ClientDataset1.FieldByname(´Soma´).AsFloat:=(soma);
              ClientDataset1.FieldByname(´Total´).AsFloat:=(Total);
              ClientDataset1.Post;
              edit1.clear;
              E_Desconto.Clear;
              if FormBalcao2.Edit2.text <> ´1´ then
                FormBalcao2.Edit2.text:=´1´;
            end;
        end;
    end
  else
    //--------------
    if dm.SDS_PDVS.locate(´CODIGO´,FormBalcao2.edit1.text,[])= True then
      begin
        FormBalcao2.Edit3.Text:=(dm.SDS_PDVS.FieldByName(´DESCRICAO´).AsString);
        ABREVIADO:=(dm.SDS_PDVS.FieldByName(´ABREVIADO´).AsString);
        FormBalcao2.Edit4.Text:=(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
        Beep;
        IF dm.SDS_PDVS.FieldByName(´CODIGO´).AsInteger =StrToInt(FormBalcao2.Edit1.text) then
          if FormBalcao2.Edit2.text =´´ then
            FormBalcao2.Edit2.text:=´1´;
          if FormBalcao2.Edit2.text <>´´ then
            begin
              A:=StrtoFloat(dm.SDS_PDVS.FieldByName(´PRECO´).AsString);
              B:=StrtoFloat(edit2.text);
              Soma:=(A*B);
              Total:=Total+(soma);
              Edit6.Text := FormatFloat(´R$ #,,0.00 ´, Total);
              Edit7.Text := FormatFloat(´R$ ,,0.00 ´, soma);
              ClientDataset1.Insert;
              ClientDataset1.FieldByname(´CodBarras´).AsString:=(Edit1.Text);
              ClientDataset1.FieldByname(´Codigo´).AsInteger:=(dm.SDS_Produto.FieldByName(´Codigo´).AsInteger);
              ClientDataset1.FieldByname(´Quantidade´).AsInteger:=strtoint(Edit2.Text);
              ClientDataset1.FieldByname(´Descricao´).AsString:=(ABREVIADO);
              ClientDataset1.FieldByname(´Preco´).Ascurrency:=StrTocurr(Edit4.Text);
              ClientDataset1.FieldByname(´Soma´).AsFloat:=(soma);
              ClientDataset1.FieldByname(´Total´).AsFloat:=(Total);
              ClientDataset1.Post;
              edit1.clear;
              E_Desconto.Clear;
              if FormBalcao2.Edit2.text <> ´1´ then
                FormBalcao2.Edit2.text:=´1´;
            end;
      end;
end;

Observe que havia alguns begin/end não necessários; foram retirados.

Espero que resolva.


GOSTEI 0
Dpinho

Dpinho

05/07/2005

Não me atentei a cada linha do código, apenas usei a identação para facilitar a identificação dos blocos. //-------------- if dm.SDS_PDVS.locate(´CODIGO´,FormBalcao2.edit1.text,[])= True then Observe que havia alguns begin/end não necessários; foram retirados. Espero que resolva.


Esta dando o mesmo erro nesta linha, ja tentei de tudo e não consigo resolver esta situação. Ja debuguei e nada... alguem me ajude por favor


GOSTEI 0
Massuda

Massuda

05/07/2005

O código que você postou aparentemente está OK. Verifique se o código que está [b:a968237168]antes[/b:a968237168] do trecho que você postou está OK... pode estar faltando um end, um ponto e vírgula, etc.


GOSTEI 0
Beppe

Beppe

05/07/2005

Vc não está sendo muito claro...vc disse ´já debuguei´, o que significa que seu código compila e não é erro de sintaxe, mas de execução.

Informe o erro que está dando.


GOSTEI 0
Dpinho

Dpinho

05/07/2005

Vc não está sendo muito claro...vc disse ´já debuguei´, o que significa que seu código compila e não é erro de sintaxe, mas de execução. Informe o erro que está dando.


isto mesmo, so acontece quando esta em execução


GOSTEI 0
Massuda

Massuda

05/07/2005

isto mesmo, so acontece quando esta em execução
Nesse caso, o ´primeiro suspeito´ seria o conteúdo de FormBalcao2.edit1.text... infelizmente, não sei/lembro o que acontece se o Locate for buscar algo incompatível com o tipo do campo ou se o edit estiver vazio.


GOSTEI 0
Dpinho

Dpinho

05/07/2005

[quote:c43a783040=´DPinho´]isto mesmo, so acontece quando esta em execução
Nesse caso, o ´primeiro suspeito´ seria o conteúdo de FormBalcao2.edit1.text... infelizmente, não sei/lembro o que acontece se o Locate for buscar algo incompatível com o tipo do campo ou se o edit estiver vazio.[/quote:c43a783040]

Bem o tipo do campo é char(13) e neste momento o edit esta vazio sim.
mas tambem esta acontecendo que quando mando gravar um novo item na tabela. faço uma busca o item esta gravado, mas quando vou pro ecf e tento fzer a venda ele diz que o numero não é valido exemplo ´789123456789´ não é um valor valido


GOSTEI 0
Dpinho

Dpinho

05/07/2005

Conforme a dica anterior, o problema é que o Edit estava abrindo sem valor, mudei a função para o keypress e ficou tudo bem... muito obrigado


GOSTEI 0
POSTAR