我将参数值传递 '*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) 我试图获得两个日期时间之间的差异,并将其显示为字符串为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 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中显示海军蓝色水平条.它还应该显示一些以栏为中心的文本.我没有使用自定义绘图的经验.我设置的哪些属性只能自定义绘制一列并使用其他列的默认绘图?
鉴于下面的声明如下,有没有办法从字符串值(例如'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 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"
研究这个错误并没有为我提供新的途径,你有什么想法吗?
我试图用字符(十进制值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 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) 好的,我可以在互联网上找到数百个自上而下的数据库设计与自下而上数据库设计方法之间差异的参考文献,但是,我无法找到任何真实世界的例子,或任何关于哪个设计更真实的信息适合什么情况.
谁能帮我吗?
如果我知道整数值的枚举,如何获得字符串表示?
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 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)