我得到一个ORA-00907:从下面的代码中缺少右括号
dbQuery:= TQuery.Create(nil);
dbQuery.DatabaseName:= dbMain.DatabaseName;
with dbQuery do
begin
SQL.Add('select payee_address_zip, EXTRACT(WEEKDAY FROM check_date) as DOW, ');
SQL.Add('(cmcl_bank_cleared - check_date) as DateDiff from AP_Master ');
SQL.Add('where (cmcl_bank_cleared is not null) AND ((cmcl_bank_cleared - check_date) >=:DaysParam)');
SQL.Add('order by payee_address_zip, DOW, DateDiff');
try
ParamByName('DaysParam').AsInteger:= days_param_int;
Open;
//do something else here
except on E:EDatabaseError do
begin
raise ECustomException.create('Error opening query for step 1 of computing Float Factors!');
end;//except
end; //try
end; //with
dbQuery.Free;
Run Code Online (Sandbox Code Playgroud)
有人能告诉我发生了什么事吗?我似乎无法看到我遗漏了一个括号,这个SQL对Interbase测试数据库工作得很好.但是,当它移动到客户端oracle数据库时,它崩溃,上面的错误.
我想从通过UDP向我的PC发送数据的电子设备读取数据.我在Delphi中编写了一个UDP服务器.类EIdSocketError(失败#10049)中发生异常.这是我的代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdUDPServer1.Bindings.add.IP := '192.168.1.1'; //Electronic device ip
IdUDPServer1.Bindings.add.Port:= 49152; //Electronic device port
IdUDPServer1.OnUDPRead:= UDPRead;
IdUDPServer1.Active:=True;
end;
procedure TForm1.UDPRead (Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
bytes_received: integer;
begin
bytes_received:=AData.size;
end;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
提前致谢
我想知道是否有办法在delphi 7中使用2个目录输出,在2个不同的文件夹中创建编译项目如: c:\ test ; C:\ testx
我已经尝试过分号但没有用.
谢谢!
我原来的代码在这里..
function AddNumStrings(Str1, Str2: string): string;
var
i: integer;
carryStr: string;
worker: integer;
workerStr: string;
begin
Result:= inttostr(length(Str1));
Result:= '';
carryStr:= '0';
// make numbers the same length
while length(Str1) < length(Str2) do Str1:= '0' + Str1;
while length(Str1) > length(Str2) do Str2:= '0' + Str2;
i:= 0;
while i < length(Str1) do begin
worker:= strtoint(copy(Str1, length(Str1) - i, 1)) + strtoint(copy(Str2, length(Str2) - i, 1)) + strtoint(carryStr);
if worker > 9 then begin
workerStr:= inttostr(worker);
carryStr:= copy(workerStr, 1, 1); …Run Code Online (Sandbox Code Playgroud) 我正在将项目从Delphi 7迁移到Delphi XE2.
我仍然在努力,但当我在Delphi XE2中运行项目时,它停止在一个函数中,该函数从第三方组件调用一个单元.此单元未初始化,因此我预计会出现此错误.
但是,当我在Delphi 7中编译项目时,我得到了它应该像XE2一样破坏的部分,它正常工作.因此,当我尝试编译时,我继续在项目中检查此单元,并在IDE中打开该单元.它显示了这条消息.
Field FormPropiedadesElemento.SpinVector没有相应的组件.删除声明?
单击"否"后,项目运行但现在停止在与Delphi XE2项目相同的部分.
当我看到这个单元的代码时,这个问题只发生在Delphi 7中.
知道它可能是什么或如何解决它?
我正在尝试做一个简单的程序,当点击其他框架/表单上的按钮时,该程序将显示一个框架.为了更清楚,我想要像MessageDialogBox,但我想要显示一个框架而不是MessageDialogBox.
到目前为止我尝试过的是OnClickEvent上的代码.
procedure TFrame3.SpeedButton1Click(Sender: TObject);
var
frm : TfrmVizorFunctii; // This is the frame I want to be appear;
begin
frm := TfrmVizorFunctii.Create(nil);
frm.Parent := nil;
frm.ABDBGrid1.ActiveColumn:=2;
frm.Left:=(Screen.Width-Width) div 2;
frm.Top:=(Screen.Height-Height) div 2;
frm.Show;
end;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我使用Delphi 7制作了一个接口软件,用于从arduino中获取数据.Arduino有3个传感器.Arduino将发送16个字符作为传感器值.例子是:
m 0 0 . 0 1 0 0 . 0 2 0 0 . 0 3
[1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16]
[1] Flag for Start value
[2],[7],[12] are sensors status (0=disconnected, 1=connected)
[3][4][5][6] first sensor value
[8][9][10][11] second sensor value
[13][14][15][16] third sensor value
Run Code Online (Sandbox Code Playgroud)
我将arduino中的字符串值分配给名为Edit1的editText.之后我使用字符串"Copy"逐个获取传感器值.然后,传感器值将在标签中逐个显示.但标签需要很长时间才能改变价值.第一次,我认为它是由标签导致的更新缓慢.然后我用editText更改标签,但工作方式相同(仍然需要很长时间来更新值).那么有没有办法让这件事变得更快?或者字符串操作有问题?
这是我的代码:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str,Buffer,Rstatus,Sstatus,Tstatus: String;
arus : real;
i : integer;
begin
DecimalSeparator:='.';
ComPort1.ReadStr(Str, 1);
begin
Buffer:=Buffer + Str;
Edit1.Text:=Edit1.Text+Str;
if Str='m' then
edit1.Text:='';
if Length(Edit1.Text) >=15 then
begin
Rstatus:=copy(Edit1.Text,1,1);
Sstatus:=copy(Edit1.Text,6,1);
Tstatus:=copy(Edit1.Text,11,1);
if …Run Code Online (Sandbox Code Playgroud) 试图将这段Delphi代码转换为,C#并且我else对if/else语句的以下部分实际结束的地方感到困惑.以下是代码的确切格式:
try
Root:=ExtractFileRoot(FileName);
ErrorStr:=ExtractFileRoot(FileName)+' invalid name';
if not GetNextNumericSegment(Root,Segment) then exit;
if length(Segment) = 4 then
begin
Year:=StrToInt(Segment);
GetnextNumericSegment(Root,Segment)
end
else // Where does this else statement end?
Year:=Defaultyear;
ErrorStr:=ExtractFileRoot(FileName)+' invalid';
if Length(Segment) <> 3 then exit;
Jday:=StrToInt(Segment);
ErrorStr:=ExtractFileRoot(FileName)+' Bad File';
if not GetNextNumericSegment(Root,Segment) then exit; // bad Time of day
GetTimeFromFileName:=EncodeDate(Year,1,1)+Jday-1+
EncodeTime(StrToInt(Copy(Segment,1,2)),StrToInt(Copy(Segment,3,2)),StrToInt(Copy(Segment,5,2)),0);
except
GetTimeFromFileName:=0;
end;
Run Code Online (Sandbox Code Playgroud)
我知道你不必使用开头/结尾,但到目前为止我在这段代码中看到的所有内容都使用了它.我也看了,你不需要;在if语句的一部分,并且第一;后else是底了else.
我的猜测是,根据一切else和达except是金 …
我正在使用Delphi 7.
我有两个包含Form1和的单位Form2.在某些过程中会多次调用辅助表单,我非常担心内存使用情况.
当我启动该程序时,内存使用量约为2.1 MB.当Form2被调用时,内存增大到2.9 MB.在此过程之后,我关闭Form2并再次调用它来模拟常规使用,内存增长到3.1 MB,再次调用,内存增长到3.4 MB,3.6 MB,3.8 MB等.
内存使用是主要问题.
Form1这样叫Form2:
uses
Unit2;
...
private
{ Private declarations }
FChild : TForm2;
...
FChild := TForm2.Create(nil);
try
FChild.ShowModal;
finally
FChild.Free;
end;
Run Code Online (Sandbox Code Playgroud)
内部Unit2:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?有更好的解决方案吗?
请问,这不是一个简单的问题,因为这个程序将运行24小时,第二个表单将被多次调用.这意味着有时这个程序会冻结计算机.
我在项目中包含了FASTMM4:
program Project1;
uses
FastMM4,
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
FullDebugModeScanMemoryPoolBeforeEveryOperation := True;
SuppressMessageBoxes:=False; …Run Code Online (Sandbox Code Playgroud) 我的Delphi 7副本有这些非常有用的颜色编码部分,用于显示if语句和循环的开始和结束等等...
这些被称为什么,如何在其他没有显示它们的Delphi 7副本中打开它们?或者,我需要安装一些东西吗?
delphi ×10
delphi-7 ×10
arduino ×1
delphi-xe2 ×1
events ×1
frame ×1
if-statement ×1
indy ×1
oracle ×1
serial-port ×1
sql ×1
udp ×1