我需要一种方法来检测光学DVD/CD驱动器是否实际存在于计算机上.是否插入光盘(除非这有助于我的目标).
使用DirectoryExists对我来说并不总是有效,因为不是每个人的光盘驱动器都是D:\并且false即使有驱动器也不会返回,但是当前没有插入光盘?
当使用这个程序时,我得到一个抽象的错误(就是说它就是这样).我在其他项目中使用此程序,这是我第一次碰到它.我不确定它是否与输入字符串的语法有关.
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)
我已经删除了一些调试代码,这些代码强调了程序失败的事实,之后或之前都没有.我可以不使用逗号作为分隔符吗?
如果可以从使用标准化布局组织的网站读取信息,则意味着网站的控件/文本框/按钮等始终位于同一位置,但其所持有的数据/值会发生变化.
在C#WinForm应用程序中,我可以在后台打开该页面读取一些值并使用我的表单中的那些值吗?有没有办法在网页上引用特定的区域/项目,即使它只是标签效率低12倍?我完全在这里做梦吗?
同样,我不需要点击页面上的某些内容,只需阅读某个文本框中的内容或那种性质的内容.
您好我有一个WinForm应用程序,生成大量数据.目前,我有一个Excel .xls文件格式的可维护和可打开.但是,我想放弃这一点,以便用户无法在Excel中打开文件并自由修改内容.
我提出的解决方案是将其编码为新文件类型,例如".por"文件.但是我也不希望这是扩展的简单重命名,以便用户可以重命名回.xls并进行编辑.我怎样才能做到这一点?
此外,我正在以程序方式将DataTable一行逐行写入Excel文件.DataTable使用不同的方法(而不是SQL)保存内容会有帮助吗?
我有一个显示模态形式的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)
因为外部文件是在我的插件之外操作的,所以我无法判断它们何时完成并且已经创建.
我试图绘制一个源自X,Y值列表的图像,这些值代表一条线的起点和终点.它们以英寸为单位,因此它们目前被格式化为小数.
我遇到的问题是绘图.该MoveTo和LineTo命令需要一个整数双.如果我使用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) 我有一个具有一些属性的对象:
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因为当复选框被填充时我需要"无所事事"动作(它们都是三态).当我运行它时,这些对象的参数都没有改变.为什么是这样?
我有一个程序,我从另一个问题中发现,当提供一个字符串,一个分隔符和一个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\,并EqualParse是TStringList,所有我得到的回复是200针对EqualParse[0](这应该是一切等号的左边.我期待着回来200 : NCPATH ------------->.难道有什么错我如何使用代码?我可以修改如果不明确地做,也不会被空格分割?