小编Blo*_*mUp的帖子

为什么FindFirst返回与掩码不匹配的文件名?

我将参数值传递 '*1.dat'给FindFirst,仍然是FindFirst()例程返回的第一个文件46checks5.dat,非常一致.

这是一个已知的问题吗?

vpath:=trim(vpath);
result:=true;
try
  res:=findfirst(vpath+'\'+vmask,faarchive,search);    //vmask = *1.dat
  try 
    while res=0 do
    begin
      vlist.add(search.name);   //searchname returned is 46checks5.dat!!!
      res:=findnext(search);
    end;
  finally
    findclose(search);
  end;
except
  result:=false;
end;
Run Code Online (Sandbox Code Playgroud)

delphi findfirst

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

以小时,分钟,秒为单位的日期时间之间的差异

我试图获得两个日期时间之间的差异,并将其显示为字符串为hh:mm

q.parambyname('vstart').asdatetime:=  vstart;
q.parambyname('vend').asdatetime:= vend;
d:= vend-vstart;
mins:= d * 1440;
q.ParamByName('mins').asBCD:= mins;
Run Code Online (Sandbox Code Playgroud)

目前数据库只需几分钟即可存储

例子(0.39)

我想从数据库中取出它并以字符串格式hh:mm显示它

delphi delphi-2010

8
推荐指数
2
解决办法
2万
查看次数

将图形栏添加到StringGrid col

使用Delphi 2010和TStringGrid组件,我目前显示数据库查询中的五个fild.

这是我正在做的一个简单的例子

//设置网格

procedure TGriddata.FormCreate(Sender: TObject);
begin
 grdMain.Rows[0].commatext:='"One","Two","Three","Four","Five"';
 grdMain.ColWidths[0]:= 50;
 grdMain.ColWidths[1]:= 175;
 grdMain.ColWidths[2]:= 175;
 grdMain.ColWidths[3]:= 100;
 grdMain.ColWidths[4]:= 300;
end;
Run Code Online (Sandbox Code Playgroud)

//显示网格中的数据//注意,我没有显示查询的创建,执行或销毁

procedure TGriddata.load;
begin
 ... 
 grdMain.Cells[0,row]:= FieldByName('one').AsString;
 grdMain.Cells[1,row]:= FieldByName('two').AsString;
 grdMain.Cells[2,row]:= FieldByName('three').AsString;
 grdMain.Cells[3,row]:= FieldByName('four').AsString;
 //draw progress bar here
 ...
end;
Run Code Online (Sandbox Code Playgroud)

其中一列("五")需要在col中显示海军蓝色水平条.它还应该显示一些以栏为中心的文本.我没有使用自定义绘图的经验.我设置的哪些属性只能自定义绘制一列并使用其他列的默认绘图?

delphi custom-draw delphi-2010 stringgrid

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

来自字符串的枚举

鉴于下面的声明如下,有没有办法从字符串值(例如'one')中检索枚举值(例如jt_one)?

type
 TJOBTYPEENUM =(jt_one, jt_two, jt_three);


CONST JOBTYPEStrings : ARRAY [jt_one..jt_three] OF STRING =
     ('one','two','three');
Run Code Online (Sandbox Code Playgroud)

或者我是否需要使用嵌套的if语句创建自己的函数?

注意:我不是在寻找字符串"jt_one"

delphi delphi-2010

5
推荐指数
2
解决办法
3208
查看次数

在SQL中使用params时从字符串转换错误

使用Delphi 2010(Firebird [测试],MS Sql Server,Oracle [生产])

以下是我的SQL

SELECT p.script_no, MIN(p.start_Time) as startTime, MAX(p.end_Time) as endTime, 
SUM(p.duration) as TotalDuration
FROM phase_times p
WHERE (p.script_no=:scriptNo) AND (Trunc(p.start_time) >= :beginDateRange) AND (Trunc(p.start_time) <= :endDateRange) 
GROUP BY p.script_no



ParamByName('beginDateRange').AsDate:= Date - 30;
ParamByName('endDateRange').AsDate:= Date;
Run Code Online (Sandbox Code Playgroud)

我收到"字符串转换错误 - 10-25-2012",我不知道为什么,因为我的datetime字段在数据库中的"10/25/2012 9:20:49 AM"格式.

如果我将其更改为以下:ParamByName('beginDateRange').AsString:= formatDateTime('mm/dd/yyyy',Date - 30).....我收到错误"字符串转换错误 - 10/25/2012"

研究这个错误并没有为我提供新的途径,你有什么想法吗?

delphi firebird delphi-2010

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

使用delphi 2010替换UTF-8文件中的unicode字符

我试图用字符(十进制值65)替换UTF-8文件中的字符(十进制值197)

我可以加载文件并将其放在一个字符串中(虽然可能不需要这样做)

SS := TStringStream.Create(ParamStr1, TEncoding.UTF8);
SS.LoadFromFile(ParamStr1);
//S:= SS.DataString;
//ShowMessage(S);
Run Code Online (Sandbox Code Playgroud)

但是,如何用65替换所有197的,并将其保存为UTF-8?

 SS.SaveToFile(ParamStr2);
 SS.Free;
Run Code Online (Sandbox Code Playgroud)

--------------编辑----------------

reader:= TStreamReader.Create(ParamStr1, TEncoding.UTF8);
 writer:= TStreamWriter.Create(ParamStr2, False, TEncoding.UTF8);

 while not Reader.EndOfStream do
 begin
  S:= reader.ReadLine;
  for I:= 1 to Length(S)  do
  begin
   if Ord(S[I]) = 350 then
   begin
    Delete(S,I,1);
    Insert('A',S,I);
   end;
  end;
  writer.Write(S + #13#10);
 end;

 writer.Free;
 reader.Free;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

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

如何将字符串参数传递给TADOQuery?

使用Delphi 2010

任何人都可以通过我的代码告诉我我在做错了什么.注释显示了我尝试将参数传递给ADOQuery的特定方法所收到的错误

procedure CreateAdminLogin(const APasswd: string);
var
  qry: TADOQuery;
  //P1, P2: TParameter;
begin
  qry := TADOQuery.Create(nil);
  try
    qry.Connection := frmDataModule.conMain;
    qry.SQL.Text := 'INSERT INTO Users (User_Id, Password) VALUES (:u, :p)';

    //Syntax error in INTO statement
    qry.Parameters.ParamByName('u').Value:= 'Admin';
    qry.Parameters.ParamByName('p').Value:= GetMd5(APasswd);


    //invalid variant operation
    {qry.Parameters.ParamByName('u').Value.AsString:= 'Admin';
    qry.Parameters.ParamByName('p').Value.AsString:= GetMd5(APasswd);}

    //invalid variant operation
    {P1:= qry.Parameters.ParamByName('u');
    P1.Value.asString:= 'Admin';
    P2:= qry.Parameters.ParamByName('p');
    P2.Value.asString:= GetMd5(APasswd);}


    qry.Prepared := True;
    qry.ExecSQL;
  finally
    qry.Free;
  end;

end;
Run Code Online (Sandbox Code Playgroud)

注意:GetMD5声明如下

function GetMd5(const Value: String): string;
var
  hash: MessageDigest_5.IMD5;
  fingerprint: string;
begin
  hash := …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

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

自上而下与自下而上的数据库设计:真实世界的例子

好的,我可以在互联网上找到数百个自上而下的数据库设计与自下而上数据库设计方法之间差异的参考文献,但是,我无法找到任何真实世界的例子,或任何关于哪个设计更真实的信息适合什么情况.

谁能帮我吗?

database database-design data-modeling

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

从字符串const数组中检索字符串

如果我知道整数值的枚举,如何获得字符串表示?

type    
  MyEnum = (tmp_one, tmp_two, tmp_three);

const
  MyTypeNames: array[tmp_one..tmp_three] of string = ('One', 'Two', 'Three');
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2010

0
推荐指数
2
解决办法
174
查看次数

使用Windows键按下以打破循环(非keyPress事件)

使用Delphi 2010

嗨,我正在寻找一种方法来使用按键突破循环(例如'x')

procedure TfrmMain.btnSpinClick(Sender: TObject);

function IsControlKeyPressed: Boolean;
begin
  Result := GetKeyState(Ord('x')) < 0;
end;

var
 ProductList: TStringList;
 I, Integer;
begin
  Screen.Cursor:= crHourGlass;
  Spinning:= True;
  UpdateAll;
  Application.ProcessMessages;
  //create a product list
  ProductList:= TStringList.Create;
  ProductList.LoadFromFile(edtProductsFile.Text);
  Progressbar1.Min:= 1;
  Progressbar1.Max:= ProductList.Count - 1;
  //interate through the product list
  //skip first line (its the field names) and start at the second line
  for I:=  1 to ProductList.Count - 1 do
  begin
    //***************
   //other code here
   //***************
   Progressbar1.Position:= Progressbar1.Position + 1;
   ***if IsControlKeyPressed then …
Run Code Online (Sandbox Code Playgroud)

delphi

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