小编ika*_*eat的帖子

检测是否存在物理光驱

我需要一种方法来检测光学DVD/CD驱动器是否实际存在于计算机上.是否插入光盘(除非这有助于我的目标).

使用DirectoryExists对我来说并不总是有效,因为不是每个人的光盘驱动器都是D:\并且false即使有驱动器也不会返回,但是当前没有插入光盘?

delphi dvd detection

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

分割字符串时的抽象错误

当使用这个程序时,我得到一个抽象的错误(就是说它就是这样).我在其他项目中使用此程序,这是我第一次碰到它.我不确定它是否与输入字符串的语法有关.

procedure SplitString(const Delimiter: Char; Input: string; const Strings: TStrings);
begin
  //Delimits or splits the received string, returns TStrings array
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.StrictDelimiter := True; //needed otherwise whitespace is used to delimit
   Strings.DelimitedText := Input;
end;
Run Code Online (Sandbox Code Playgroud)

应用程序调用如下:

      try
        LBOMPartLine := TStrings.Create;
        SplitString(',','C:\DATA\Parts\PART4.PS.0,10,10',LBOMPartLine);
      ...
Run Code Online (Sandbox Code Playgroud)

我已经删除了一些调试代码,这些代码强调了程序失败的事实,之后或之前都没有.我可以不使用逗号作为分隔符吗?

delphi string split delimiter

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

阅读网站信息,显示应用程序

如果可以从使用标准化布局组织的网站读取信息,则意味着网站的控件/文本框/按钮等始终位于同一位置,但其所持有的数据/值会发生变化.

在C#WinForm应用程序中,我可以在后台打开该页面读取一些值并使用我的表单中的那些值吗?有没有办法在网页上引用特定的区域/项目,即使它只是标签效率低12倍?我完全在这里做梦吗?

同样,我不需要点击页面上的某些内容,只需阅读某个文本框中的内容或那种性质的内容.

c# webclient web-crawler winforms

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

创建,写入和读取新文件类型

您好我有一个WinForm应用程序,生成大量数据.目前,我有一个Excel .xls文件格式的可维护和可打开.但是,我想放弃这一点,以便用户无法在Excel中打开文件并自由修改内容.

我提出的解决方案是将其编码为新文件类型,例如".por"文件.但是我也不希望这是扩展的简单重命名,以便用户可以重命名回.xls并进行编辑.我怎样才能做到这一点?

此外,我正在以程序方式将DataTable一行逐行写入Excel文件.DataTable使用不同的方法(而不是SQL)保存内容会有帮助吗?

c# datatable save

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

等到文件存在,然后继续执行程序

我有一个显示模态形式的Delphi应用程序插件.在单独的表单代码中,它调用另一个exe文件来处理一些文件,然后关闭.插件的第二部分操纵exe中创建的文件.

我的问题是,程序在实际创建外部文件之前仍在继续.有没有办法暂停我的Delphi插件并循环或等到FileExists返回true然后继续?

伪代码:

Launch form (ShowModal)
Form runs exe, manipulates external files
Close Form
Form released
if ExternalFiles exist, do stuff.
Run Code Online (Sandbox Code Playgroud)

因为外部文件是在我的插件之外操作的,所以我无法判断它们何时完成并且已经创建.

delphi wait

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

在画布中使用十进制值绘制图像

我试图绘制一个源自X,Y值列表的图像,这些值代表一条线的起点和终点.它们以英寸为单位,因此它们目前被格式化为小数.

我遇到的问题是绘图.该MoveToLineTo命令需要一个整数双.如果我使用Round(float)数学运算,你会看到下面的输出.舍入产生相同的起点和终点,因此不绘制任何内容.

如何从十进制X,Y点列表中绘制我的形状?

调试输入值的代码(小数):

LineStartVal: -88.988857, 36.265838
LineEndVal: -89.094923, 36.371904
LineStartVal: -89.094923, 36.371904
LineEndVal: -95.000423, 36.371904
LineStartVal: -95.000423, 36.371904
LineEndVal: -95.000423, 32.828604
LineStartVal: -95.000423, 32.828604
LineEndVal: -99.134273, 32.828604
Run Code Online (Sandbox Code Playgroud)

舍入后输出点的调试代码:

MoveTo: -89, 36
LineTo: -89, 36
MoveTo: -89, 36
LineTo: -95, 36
MoveTo: -95, 36
LineTo: -95, 33
MoveTo: -95, 33
LineTo: -99, 33
Run Code Online (Sandbox Code Playgroud)

绘图代码片段:

//Function used to to get start and stop points
LSNLineObj.GetEndPoints(X1,Y1,X2,Y2);


//OutputMemo.Text := OutputMemo.Text + #13#10 + 'LineStartVal: ' + FloatToStrF(X1, …
Run Code Online (Sandbox Code Playgroud)

delphi drawing rounding

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

在另一个过程中设置对象的属性

我有一个具有一些属性的对象:

Obj.Big
Obj.Rotate
Obj.Paint
Obj.Lines
Run Code Online (Sandbox Code Playgroud)

它们都是布尔类型属性.

在我的主程序中,我调用另一个程序:

procedure TMainForm.Create(Sender:TObject);
begin
     SetParameter(BigCheckBox, Obj.Big);
     SetParameter(RotateCheckBox, Obj.Rotate);
     SetParameter(PaintCheckBox, Obj.Paint);
     SetParameter(LinesCheckBox, Obj.Lines);
end;
Run Code Online (Sandbox Code Playgroud)

SetParameter程序是这样的:

procedure TMainForm.SetParameter(ACheckBox : TCheckBox; ABoolOption : Boolean);
begin
    if(ACheckBox.Checked) and (ACheckBox.Enabled) then begin
      ABoolOption := true;
    end
    else if(not ACheckBox.Checked) and (ACheckBox.Enabled) then begin
      ABoolOption := false;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

它接受checkbox对象和传递对象的布尔属性的属性ABoolOption.我不能简单地做,LinesCheckBox.Checked := Obj.Lines因为当复选框被填充时我需要"无所事事"动作(它们都是三态).当我运行它时,这些对象的参数都没有改变.为什么是这样?

delphi checkbox boolean

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

解析/拆分字符串不会返回所有部分

我有一个程序,我从另一个问题中发现,当提供一个字符串,一个分隔符和一个TStrings列表时,它应该拆分/分隔一个字符串.该程序是:

procedure SplitString(const Delimiter: Char; Input: string; const Strings: TStrings);
begin
  //Delimits or splits the received string, returns TStrings array
   Assert(Assigned(Strings)) ;
   Strings.Clear;
   Strings.Delimiter := Delimiter;
   Strings.DelimitedText := Input;
end;
Run Code Online (Sandbox Code Playgroud)

但是当我提供它时:

SplitString('=',test,EqualParse);
Run Code Online (Sandbox Code Playgroud)

哪里test是一个字符串200 : NCPATH -------------> = C:\SNDATA\NC\,并EqualParseTStringList,所有我得到的回复是200针对EqualParse[0](这应该是一切等号的左边.我期待着回来200 : NCPATH ------------->.难道有什么错我如何使用代码?我可以修改如果不明确地做,也不会被空格分割?

arrays delphi string

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