【问题标题】:; expected but everything is correct;预期但一切都是正确的
【发布时间】:2020-02-17 08:44:50
【问题描述】:

我,我正在编写我的第一个 delphi 脚本,当我想运行它时,有一个 ';预期的错误,但我不知道为什么。当我单击错误时,光标会跳到出现错误的位置,但那是代码末尾下方的两行 怎么了?

var   
   stringName : String;
   stringBase : String;         

procedure setPicturePath();
var      
    qryPicEncode : TOraQuery;
    qryPicDecode : TOraQuery; 
begin
    qryPicEncode := TOraQuery.Create(nil);
    qryPicEncode.SQL.Text := 'select ''utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw("werner weilenmann"))) from dual';
    qryPicDecode := TOraQuery.Create(nil);
    qryPicDecode.SQL.Text := 'select ''utl_raw.cast_to_varchar2(utl_encode.base64_decode(utl_raw.cast_to_raw("d2VybmVyIHdlaWxlbm1hbm4="))) from dual';                                                    

    qryPicEncode.open;
    qryPicEncode.first;
    if not(qryPicEncode.eof) then begin
        stringName := qryPicEncode.fieldByName('pic4Path').AsString;
    end;
    qryPicDecode.open;
    qryPicDecode.first;
    if not(qryPicDecode.eof) then begin
       stringBase := qryPicDecode.fieldByName('ODACQuery1').AsString;
    end;
    qryPicEncode:=nil;              
    qryPicDecode:=nil;                                         
end;  


begin
    //Picture2.LoadFromFile('U:\Documents\logos\logo1.png');              
    setPicturePath();
    showmessage(stringName);
    showmessage(stringBase);          
end.

【问题讨论】:

  • 您没有显示足够的代码来回答导致; expected 错误的原因。由于编译器认为错误超出了您的实际代码,因此您的部分代码中可能有错误的行尾字符。当您从网上复制代码时,可能会发生这种情况。您使用的是哪个 Delphi 版本?
  • 似乎还有其他一些错误。在较低的begin - end 块中,您调用setPicturePath,它的末端设置qryPicEncode:=nilqryPicDecode:=nil。在执行返回到较低的begin - end 块时,您的代码将继续调用showmessage(qryPicEncode);。您希望ShowMessage() 对话框向您展示什么?其次,qryPicEncode 和 'qryPicDecode' 是procedure setPicturePath 中的局部变量,它们甚至对较低的begin - end 块都不可见。
  • 查看this answer 以了解当错误的 End-Of.Line 字符可能会偏移代码的行号时的解释。它结合可执行行(可以放置断点)解释它,但也会导致类似的行号错误。
  • 我已经对其进行了编辑,现在我得到一个“引用的字符串未正确终止”异常。
  • 我想显示名称Base64编码和解码

标签: delphi syntax


【解决方案1】:

您的开始/结束似乎有一些错误。

这里:

begin
    setPicturePath();
    showmessage(qryPicEncode);
    showmessage(qryPicDecode);                                      
end;

您将变量 qryPicEncode local 引用到 setPicturePath(); 过程 - 但此代码块在其 外部...

格式化源代码以揭示错误

【讨论】:

  • 将其更改为 stringBase 和 stringName 但没有更改相同的异常
  • 局部变量的使用可能表明您显示的代码不是真实的。
猜你喜欢
  • 1970-01-01
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2023-02-11
  • 1970-01-01
相关资源
最近更新 更多