相关疑难解决方法(0)

用于评估反向参数的Delphi编译器指令

使用Math.pas的IFThen函数,我对这个delphi二线程印象非常深刻.但是,它首先评估DB.ReturnFieldI,这是不幸的,因为我需要调用DB.first来获取第一条记录.

DB.RunQuery('select awesomedata1 from awesometable where awesometableid = "great"');
result := IfThen(DB.First = 0, DB.ReturnFieldI('awesomedata1'));
Run Code Online (Sandbox Code Playgroud)

(作为一个毫无意义的澄清,因为我已经有了很多好的答案.我忘了提到0是DB.First返回的代码,如果它有内容,否则可能没有意义)

显然这不是什么大问题,因为我可以使用五个强大的衬垫.但是我需要的就是让Delphi首先评估DB.first,然后再评估DB.ReturnFieldI.我不想改变math.pas而且我认为这不保证我会过度使用ifthen,因为它有16个ifthen函数.

只是让我知道编译器指令是什么,如果有更好的方法来做到这一点,或者如果没有办法做到这一点,任何人的程序是调用db.first并盲目地检索他发现的第一件事不是一个真正的程序员.

delphi compiler-directives

5
推荐指数
1
解决办法
600
查看次数

为什么连接字符串函数会将结果置于错误的顺序?

我正在使用类似的东西来定义SQL插入命令:

sql := 'insert into table(a, b, c) values (' + formatfunction(a) + ', ' + 
                                               formatfunction(b) + ', ' +
                                               formatfunction(c) + ');';
Run Code Online (Sandbox Code Playgroud)

在赋值之后,变量sql以不同的顺序包含a,b,c的格式化值,结果如下所示:

insert into (a, b, c) values ??('value in c', 'value in a', 'value in b');
Run Code Online (Sandbox Code Playgroud)

可能是编译器优化的一些问题?

抱歉可怜的示例代码,完整的可执行代码如下:

procedure Execute(var v : String);
  function ExtractValue(var Content: String; Separator: Char = '|'): String;
  var
    vpHead,
    vpTail,
    vpContent: PChar;
    vsValor: String;
  begin
    vpContent := PChar(Content);
    Result := '';
    if (vpContent = nil) or
       (vpContent^=#0) then
      Exit;
    vpTail := …
Run Code Online (Sandbox Code Playgroud)

delphi string-concatenation lazy-evaluation

1
推荐指数
1
解决办法
580
查看次数

为什么我的输入框不按顺序显示?

我需要制作一个程序,输入并显示产品的信息(品牌名称,内容,质量和库存量).

问题:即使编写代码以按顺序显示代码,此代码中的输入框也不会按顺序完全显示.输入框按此顺序排列:"内容","质量","库存","品牌名称",实际上应该是"品牌名称","内容","质量","库存".(这些是输入框的标题).

- 我认为这可能是源代码(向下滚动程序的其余部分):

 StrObj := TProducts.Create(Inputbox('Brand name', 'Input the brand name', ''),Inputbox('Contents', 'Input the contents', ''), StrToInt(Inputbox('Mass', 'Input the mass', '')), StrToInt(Inputbox('Stock', 'Input the number in stock', '')));
Run Code Online (Sandbox Code Playgroud)

注意:

- 所有数据都会转到预定的位置,因此输入框的顺序根本不会影响程序.我想知道是否有办法使输入框按顺序显示.

- 这是一项作业,但输入框的顺序不会计算标记.

整码:

应用:

unit TProducts_U;

interface

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

type
  TForm1 = class(TForm)
    btnResult: TButton;
    redOut: TRichEdit;
    procedure btnResultClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} …
Run Code Online (Sandbox Code Playgroud)

delphi

1
推荐指数
1
解决办法
97
查看次数