我在Delphi 2010中编写了一个程序.该程序的一部分涉及File Hashing,其中大文件需要相当长的时间.我遇到的问题是当程序离开用户想要的文件时,程序当前在100MB文件上挂起最多60秒.我希望用户能够在文件哈希发生时使用程序的其他功能(Memopad,String Hashing).
该方案目前的结构如下: -
正如我所说的大文件,这可能需要长达60秒,特别是Whirlpool,SHA-512算法.另一个奇怪的事情是,虽然在代码中它应该在返回特定哈希算法之后打印输出,然后再检查下一个结果直到所有完成才显示.
我没有发布任何实际代码,因为所有这些都涵盖了相当多的代码,但我可以发布任何需要帮助的代码段.
我正试图让我的StringGrid中的文本居中.经过一些研究后,我想出了这个由其他人发布的函数,当在DefaultDraw上使用时:False应该有效.
procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
S: string;
SavedAlign: word;
begin
if ACol = 1 then begin // ACol is zero based
S := StringGrid1.Cells[ACol, ARow]; // cell contents
SavedAlign := SetTextAlign(StringGrid1.Canvas.Handle, TA_CENTER);
StringGrid1.Canvas.TextRect(Rect,
Rect.Left + (Rect.Right - Rect.Left) div 2, Rect.Top + 2, S);
SetTextAlign(StringGrid1.Canvas.Handle, SavedAlign);
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是,如果我设置DefaultDraw:False,则StringGrid只显示glitchey.
函数中用文本填充StringGrid的行是
Sg.RowCount := Length(arrpos);
for I := 0 to (Length(arrpos) - 1) do
begin
sg.Cells[0,i] := arrpos[i];
sg.Cells[1,i] := arrby[i];
end;
Run Code Online (Sandbox Code Playgroud)
arrpos和arrby是字符串数组.sg是StringGrid.
之后我需要执行文本以显示在单元格的中心.
UPDATE …
我希望能够在点击按钮时终止一个线程,例如,如果用户需要,请将该过程停止一半.显然,你可以通过在线程中设置Terminated变量来实现这一点,这意味着你可以在退出之前执行某些代码而不是突然终止.
到目前为止的代码如下: -
单击启动线程
procedure TForm1.Panel29Click(Sender: TObject);
var
cmpfil : TThread;
begin
if (Edit3.Text <> '') AND (Edit4.Text <> '') then
begin
Form1.ProgressBar1.Min := 0;
Form1.Progressbar1.Max := 30000;
Form1.ProgressBar1.Position := 0;
cmpfiles := TCompareFilesThread.Create();
end;
end;
Run Code Online (Sandbox Code Playgroud)
创建线程
constructor TCompareFilesThread.Create;
begin
inherited Create(False);
end;
Run Code Online (Sandbox Code Playgroud)
实际线程
procedure TCompareFilesThread.Execute;
var
forg, fpat : file;
byteorg, bytepat : Array[0..1023] of byte;
i,z,o : integer;
fil1,fil2 : TFilename;
begin
//Form1.CompareFiles(FEdit3Text, FEdit4Text, FGrid, FOp, FProg);
begin
fil1 := Form1.Edit3.Text;
fil2 := Form1.Edit4.Text;
if Form1.CRCAdlerGenFile(fil1,1) <> Form1.CRCAdlerGenFile(fil2,1) …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个简单的注册表单.为了整齐地对齐所有内容,我使用了表格方法.但是,文本未在表格的中心对齐,而是在表格的下方.我之前使用过类似的方法,但它工作得很好.
你可以在这里看到问题.http://www.krawczyksolutions.com/sender/register.php
表的代码是
<div class="head" align="center">
<div align="center" class="box">
<h2>Register New Account</h2><p/>
<form name="regform" action="javascript:checkForm();">
<table>
<tr>
<td>First Name: </td>
<td><input type="text" name="fname" class="input" size="30" /><p/></td>
</tr>
<tr>
<td>Last Name: </td>
<td><input type="text" name="lname" class="input" size="30"/><p/></td>
</tr>
<tr>
<td>Company: </td>
<td><input type="text" name="comp" class="input" size="30"/><p/></td>
</tr>
<tr>
<td>Address Line 1: </td>
<td><input type="text" name="add1" class="input" size="30" /><p/></td>
</tr>
<tr>
<td>Address Line 2: </td>
<td><input type="text" name="add2" class="input" size="30" /><p/></td>
</tr>
<tr>
<td>City: </td>
<td><input type="text" name="city" class="input" size="30" /><p/></td> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Javascript中创建一个小型自动化脚本,我想使用Opera的用户脚本功能运行一个站点,以定义要运行的外部脚本.我之前使用过这个功能来运行我用外部网站编写的脚本,效果很好.
我需要等到页面加载脚本才能运行,但我似乎无法让它工作.目前的代码是:
if (addEventListener in document) { // use W3C standard method
document.addEventListener('load', meerfirst(), false);
} else { // fall back to traditional method
document.onload = meerfirst();
}
function meerfirst(){
nameForm = document.forms['aspnetForm'];
nameForm.elements('ctl00$CPH1$NewQuoteView$TitlesView$DropDownListTitles').value = 'MR:TRUE:MR';
nameForm.elements('ctl00$CPH1$NewQuoteView$TextBoxFirstName').value = 'James';
}
Run Code Online (Sandbox Code Playgroud)
这是我自己的函数,添加了通过另一个问题找到的if语句.我也试过window.onload,但它仍然无法正常工作.
奇怪的是Opera根本就没有真正执行脚本,好像我在if语句上设置了一个断点,它从来没有实际打破它.该网站是否内置了反用户脚本功能?或者有可能我做错了什么来阻止这个执行?
我正在使用Android手势和onFling方法.有两个浮点变量通过velocityX和velocityY.这些论文可以是0.0,正面或负面.显然0.0很容易检测,但我如何检测它是正还是负浮点数.
我找到了一些int和double的代码,但没有任何与float特别相关的代码.
我正试图在Android Studio上使用AVD截取屏幕截图,但每次我都会从Android设备监视器获取错误消息.附加了日志消息.如果需要,我可以发布完整日志.我现在尝试了三种不同的AVD,并且所有这三种都发生了同样的错误.
08-04 03:50:48.079: E/BufferQueue(1300): [ScreenshotClient] dequeueBuffer: SurfaceComposer::createGraphicBuffer failed
Run Code Online (Sandbox Code Playgroud) 我正在使用标签来显示函数的字符串结果.但是我有一个存储前一个结果的类变量,我需要根据不同的条件以不同的方式更新该变量.我写的代码是
if(displayPassword.text == @"Memorable")
{
prevpass = [newPassword returnPassword];
}
else
{
prevpass = displayPassword.text;
}
Run Code Online (Sandbox Code Playgroud)
然而它总是跳转到else,因为它似乎在调试下显示displayPassword.text总是空的depsite它显示一个值.
delphi ×3
android ×2
alignment ×1
css ×1
forms ×1
html ×1
html-table ×1
if-statement ×1
ios ×1
java ×1
javascript ×1
numbers ×1
onload ×1
opera ×1
screenshot ×1
terminate ×1
tstringgrid ×1
uilabel ×1