小编Ale*_*ith的帖子

目录名称是什么'.' 和'..'的意思是faDirectory是什么意思?

我有一个程序,用于搜索用户在路径和子路径中输入的文件,除了这一行,我对它的大部分内容都有很好的理解:

if ((Rec.Attr and faDirectory) <> 0) and (Rec.Name<>'.') and (Rec.Name<>'..')
Run Code Online (Sandbox Code Playgroud)

整个过程如下,帮助将被欣赏,因为我不确定这行代码的目的,是它检查子路径中的东西?

procedure TfrmProject.btnOpenDocumentClick(Sender: TObject);
begin
FileSearch('C:\Users\Guest\Documents', edtDocument.Text+'.docx');
end;

procedure TfrmProject.FileSearch(const Pathname, FileName : string);
var Word : Variant;
    Rec  : TSearchRec;
    Path : string;
begin
Path := IncludeTrailingBackslash(Pathname);
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0
then repeat Word:=CreateOLEObject('Word.Application');
  Word.Visible:=True;
  Word.Documents.Open(Path + FileName);
   until FindNext(Rec) <> 0;
FindClose(Rec);


if FindFirst(Path + '*.*', faDirectory, Rec) = 0 then
 try
   repeat
   if ((Rec.Attr and faDirectory) <> 0)  and (Rec.Name<>'.') …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-7

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

在列中添加值

嗨,我有一个带有AdoTable数据集的DBGrid,我的列标题包括"作业ID","旅行ID"和"旅行费用".我希望能够将"旅行费用"值相加,以创建旅行费用总额.我还有以下代码,用于过滤搜索作业ID时成功显示的旅行ID,

DBTravel.DataSource.DataSet.DisableControls;  
DBTravel.DataSource.DataSet.Filtered := False;   
DBTravel.DataSource.DataSet.Filter   := 'Job_ID = ' + edtSearchJobID.Text;    
DBTravel.DataSource.DataSet.Filtered := True;    
DBTravel.DataSource.DataSet.First;   
DBTravel.DataSource.DataSet.EnableControls;   
Run Code Online (Sandbox Code Playgroud)

每个工作都有很多旅行费用,因此每个工作ID都有许多旅行ID和旅行费用,最终我希望旅行费用总额只是通过过滤器显示的"旅行费用"值的加法,即旅行费用总和仅包括"旅行费用",其作业ID等于edtSe​​archJobID.Text,并在搜索后显示在dbgrid中.谢谢

delphi data-binding ado delphi-7

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

adoTable有问题

我希望能够确保如果一个表(在这种情况下adotHours)进入编辑或插入模式,并且用户单击保存按钮但意外地在Hours列下已经输入了相同的值,则会显示一条消息Please enter another value,否则如果用户输入不同的值,使用另一段代码.

我尝试了以下方法,但它不起作用, - 无论用户输入什么消息Please enter another value出现.

procedure TfrmLabour.Button6Click(Sender: TObject);
var 
  i,j, t: String;
begin
  Edit1.Text := adotHours['Hours'];
  j :=  Edit1.Text;
  adotHours.Post;
  Edit2.Text := adotHours['Hours'];
  t := Edit2.Text;
  if t = j then 
    showmessage ('Please enter another value')
  else begin.....
end;
Run Code Online (Sandbox Code Playgroud)

虽然我知道它可能不是最优雅的代码,但我的想法是,一旦adotHours Hours通过连接发布了值DBgrid,如果它与之前的值不同t将成为新值,因此adotHours['Hours']会有所不同并允许else begin.建议?

delphi delphi-7

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

使用特定条件删除adotable中的记录

我试过在网上看但没有运气,我怎么能删除按钮点击中的所有记录,符合不同的标准.例如,我希望能够删除adotable中的所有记录,其中Labour_ID(这是adotable中的字段名称)等于DBedit.Text.

对不起,这有点模糊,但建议将不胜感激.谢谢

delphi delphi-7

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

加密密码

我设法使用以下代码对输入的密码进行简单加密,然后在标签标题中显示加密密码,

procedure TfrmLogin.edtAddPasswordClick(Sender: TObject);
var
  NormalPassword, EncryptedPassword: string;
  PasswordChar: Char;
  EncryptedCharValue: string;
  CharPtr: Integer;
  Ptr, n: Integer;
begin
  NormalPassword := Edit1.text;
  EncryptedPassword := '';
  for CharPtr := 1 to Length(NormalPassword) do
  begin
    PasswordChar := NormalPassword[CharPtr];
    EncryptedCharValue := IntToStr (Ord(PasswordChar) * 5 + 14);
    EncryptedPassword := EncryptedPassword + EncryptedCharValue;
    Label1.Caption := EncryptedPassword;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

问题是我想将label1.caption中显示的加密密码转换回其原始形式,点击另一个按钮,我无法弄清楚如何做到这一点.有什么建议?

delphi delphi-7

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

陷阱密钥违规

嗨,我正在尝试做一些异常处理并拦截重复的字段值(密钥违规)错误.从我寻找解决方案我已经看到很多建议来捕获所有错误使用

try
(enter code)
except on E: EDatabaseError do
showmessage (Error message);
end; 
Run Code Online (Sandbox Code Playgroud)

但我想特别回应一个密钥违规,它使用ADO访问表.

delphi ado delphi-7

3
推荐指数
2
解决办法
3426
查看次数

将字符串与数字相乘

我怎么能用一个数字乘以一个数字来实现标签标题中该字符串的n次重复,即如果n = 5那么's'*n ='sssss'然后将成为标签标题.

沿着这些行的任何内容都会返回操作符不适用于操作数类型的错误.谢谢

delphi delphi-7

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

标签 统计

delphi ×7

delphi-7 ×7

ado ×2

data-binding ×1