小编Dis*_*ned的帖子

MVVM默认按钮比TextBox提交文本更快地到ViewModel

当我使用DefaultButton(编辑登录+ Tab,编辑密码+ Enter)输入登录密码时,该X.Password属性仍未更改.那么当我使用DefaultButton时如何提交密码?

member X.Password
    with get()      = password
    and set value   = 
        password <- value
        X.OnPropertyChanged "Password"

member X.LoginCommand =
    new RelayCommand ((fun canExecute -> true), (fun action ->
            X.SelectedAccount <-
                match
                    X.Accounts
                    |> Seq.filter (fun acc -> 
                        acc.Name        = login && 
                        acc.Password    = password) with
                    | s when Seq.isEmpty s -> 
                        X.ConvertButtonEnabled <- false
                        ignore <| MessageBox.Show(sprintf 
                            "User %s doesn't exist or password incorrect password" X.Login) 
                        {Name=""; Role=""; Password=""; ExpenseLineItems = []}
                    | s …
Run Code Online (Sandbox Code Playgroud)

wpf f# mvvm

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

Delphi TForm构造函数

我已经在stackoverflow上找到了一些东西,但它并没有真正解决我的疑问.我知道创建对象的正确方法是在创建之后将代码包围在try-finally块中.但是关于:

procedure TForm3.FormCreate(Sender: TObject);
begin
  a := TClassX.Create;
end;
Run Code Online (Sandbox Code Playgroud)

然后打电话:

procedure TForm3.FormDestroy(Sender: TObject);
begin
  a.Free;
end;
Run Code Online (Sandbox Code Playgroud)

课堂a: TClassX;内的公开声明在哪里TForm3.我应该为表单创建构造函数和析构函数,还是可以使用上面的代码?安全吗?

delphi

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

取两个日期之间的最小值时出错

DROP TABLE IF EXISTS tmp1_variables;
CREATE TEMPORARY TABLE tmp1_variables AS (
SELECT
    '2016-10-29'::date as start_date,
'2017-01-28'::date as end_date2,
dateadd(day,-13,getdate())::date as end_date);


SELECT cobrand_id, sum(calc) AS a, sum(count) AS b FROM jwn_calc s, tmp1_variables
        where s.optimized_transaction_date > start_date
AND s.optimized_transaction_date <= min(end_date,end_date2) 
Run Code Online (Sandbox Code Playgroud)

我特别在min(end_date,end_date2),出现错误:

[42883] 错误:函数 min(date, date) 不存在 提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。

sql postgresql

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

SQL语法错误

我想从Delphi 2007运行一个简单的SQL.

我用AdoQuery.我的表有一列id,数据类型是int(自动增量).

我的问题是如果我执行

select * from comlist
Run Code Online (Sandbox Code Playgroud)

它没有问题,它运行.但是,如果我在SQL上定义一个字段就像

select compname from comlist
Run Code Online (Sandbox Code Playgroud)

德尔福抱怨道

ado:找不到字段'id'

Compname列存在于表中.

我的桌子上有以下字段:

id int
creationdate datetime
compid nvarcahr(50)
complocation nvarchar(50)
serial nvarchar(50) 
compname nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

我有这个代码的错误:

ado.Close;
ado.SQL.Clear;
ado.SQL.Add('SELECT   compname  FROM comlist');
ado.Open;
Run Code Online (Sandbox Code Playgroud)

我对此代码没有错误:

ado.Close;
ado.SQL.Clear;
ado.SQL.Add('SELECT * FROM comlist');
ado.Open;
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?

sql delphi ado tadoquery

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

DCC32命令行编译器成功完成,但不生成EXE文件

我正在使用Delphi 5命令行编译器来进行构建.构建不会报告任何错误,但它也不会生成EXE文件.

我可以确认以下内容:

  • 通过IDE执行相同的构建行为正确.
  • IDE与DCC32构建之间的源代码或选项没有区别.
  • 问题只发生在完整版本上.即,首先使用-B选项进行构建,然后使用一个不进行构建,'compile'正确生成EXE文件.
  • 使用命令行上的-E开关强制生成无效的构建输出路径不会报告错误 - 就好像甚至没有尝试生成EXE文件一样.
  • 其他项目确实正确构建.
  • 我已禁用防病毒软件,因此可以确认这不是问题所在.

编辑虽然我在Delphi 5中遇到过这种情况,但并不是特定于该版本.在德尔福的Bug列表证实至少D4-D6的问题.

delphi dcc32

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

为什么小的更改会在此delphi代码上出现"地址xxx处的访问冲突"错误?

我有2段代码:

  1. 它工作正常

with ADOTemp  do
begin
  SQL.Clear;

  SQL.Add('INSERT INTO documents');
  SQL.Add('(document_date,fk_id_status,money_direction,');
  SQL.Add('paid,addition,saving,fk_id_base,fk_id_user)');
  SQL.Add('VALUES ');
  SQL.Add('(CONVERT(DATE,GETDATE(),103),:pfk_id_status,:pmoney_direction,');
  SQL.Add('0,0,0,'+IntToStr(p_id_base)+',:pfk_id_user)');

  Parameters.ParamByName('pfk_id_status').Value := p_id_status;
  Parameters.ParamByName('pmoney_direction').Value := p_money_direction;
  // Parameters.ParamByName('p').Value := p_id_base;
  Parameters.ParamByName('pfk_id_user').Value := fMain.ApplicationVariablers.user_id;

  ExecSQL;
end;
Run Code Online (Sandbox Code Playgroud)
  1. 它不起作用并返回一个可怕的错误

with ADOTemp  do
begin
  SQL.Clear;

  SQL.Add('INSERT INTO documents');
  SQL.Add('(document_date,fk_id_status,money_direction,');
  SQL.Add('paid,addition,saving,fk_id_base,fk_id_user)');
  SQL.Add('VALUES ');
  SQL.Add('(CONVERT(DATE,GETDATE(),103),:pfk_id_status,:pmoney_direction,');
  SQL.Add('0,0,0,:p,:pfk_id_user)');

  Parameters.ParamByName('pfk_id_status').Value := p_id_status;
  Parameters.ParamByName('pmoney_direction').Value := p_money_direction;
  Parameters.ParamByName('p').Value := p_id_base;
  Parameters.ParamByName('pfk_id_user').Value := fMain.ApplicationVariablers.user_id;

  ExecSQL;
end;
Run Code Online (Sandbox Code Playgroud)

图像错误,第1917行

在此输入图像描述

t-sql delphi access-violation

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

线程和关键部分正确的方法

现在有一个像这样的多线程方案:

//global variables   
var
  Form1: TForm1;
  ControlFile: TextFile;
  MaxThreads, iThreads: integer;
  MyCritical: TCriticalSection;
Run Code Online (Sandbox Code Playgroud)

ControlFile由执行ReadLn的线程访问,并使用获得的行执行操作:

procedure TForm1.Button2Click(Sender: TObject);
var
  HostLine: AnsiString;
  FileHandle: integer;
begin
  MyCritical:= TCriticalSection.Create;
  MaxThreads:= 100;
  iThreads:= 0;
  while not(eof(ControlFile)) and (iThreads < MaxThreads) do
    begin
      inc(iThreads);
      ReadLn(ControlFile, HostLine);
      MyThread.Create(HostLine);
    end;
end;
Run Code Online (Sandbox Code Playgroud)

这个街区是第一个疑问.我创建了100个线程,每个创建的线程接收到文本文件的当前行.但问题是在threads.onterminate上,我执行:

procedure MyThread.MainControl(Sender: TObject);
var
  HostLine: string;
begin
  try
    MyCritical.Acquire;
    dec(iThreads);
    while not(eof(ControlFile)) and (iThreads < MaxThreads) do
      begin
        inc(iThreads);
        ReadLn(ControlFile, HostLine);
        MyThread.Create(HostLine);
      end;
  finally
    MyCritical.Release;
  end;

end;
Run Code Online (Sandbox Code Playgroud)

我们的想法是继续创建新线程,直到文本文件完成.但是如果一个线程终止并执行此过程,那么在第一个完成之前,会发生什么?来自button2click的主线程将访问该文件,以及线程的过程.这看起来很奇怪.而关键部分应该是全局的还是本地的线程?这个程序MainControl在文件结束之前打开新线程应该是全局的还是线程本地的?

delphi multithreading

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

标签 统计

delphi ×5

sql ×2

access-violation ×1

ado ×1

dcc32 ×1

f# ×1

multithreading ×1

mvvm ×1

postgresql ×1

t-sql ×1

tadoquery ×1

wpf ×1