小编Fla*_*lyn的帖子

工作时将控制权交还给用户 - Delphi

我在Delphi 2010中编写了一个程序.该程序的一部分涉及File Hashing,其中大文件需要相当长的时间.我遇到的问题是当程序离开用户想要的文件时,程序当前在100MB文件上挂起最多60秒.我希望用户能够在文件哈希发生时使用程序的其他功能(Memopad,String Hashing).

该方案目前的结构如下: -

  1. 用户启动散列(可以通过更改选定的文件或散列算法来完成)
  2. 调用函数CheckHashBox
  3. CheckHashBox检查是否选择了散列算法
  4. 如果选择调用哈希算法相关功能
  5. 散列算法函数缓冲文件,通过散列算法运行,然后将最终输出打印到StringGrid
  6. 对所有12个哈希算法重复步骤3 - 5.

正如我所说的大文件,这可能需要长达60秒,特别是Whirlpool,SHA-512算法.另一个奇怪的事情是,虽然在代码中它应该在返回特定哈希算法之后打印输出,然后再检查下一个结果直到所有完成才显示.

我没有发布任何实际代码,因为所有这些都涵盖了相当多的代码,但我可以发布任何需要帮助的代码段.

delphi

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

OnDrawCell Center Text StringGrid - Delphi

我正试图让我的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 …

delphi tstringgrid

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

终止线程,退出前运行代码

我希望能够在点击按钮时终止一个线程,例如,如果用户需要,请将该过程停止一半.显然,你可以通过在线程中设置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)

delphi multithreading terminate

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

HTML表单输入/标签对齐

我正在尝试创建一个简单的注册表单.为了整齐地对齐所有内容,我使用了表格方法.但是,文本未在表格的中心对齐,而是在表格的下方.我之前使用过类似的方法,但它工作得很好.

你可以在这里看到问题.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)

html css forms html-table alignment

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

页面加载后Javascript运行功能

我正在尝试在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语句上设置了一个断点,它从来没有实际打破它.该网站是否内置了反用户脚本功能?或者有可能我做错了什么来阻止这个执行?

javascript opera onload

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

Java检测Float是正还是负

我正在使用Android手势和onFling方法.有两个浮点变量通过velocityX和velocityY.这些论文可以是0.0,正面或负面.显然0.0很容易检测,但我如何检测它是正还是负浮点数.

我找到了一些int和double的代码,但没有任何与float特别相关的代码.

java floating-point android numbers

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

Android Studio设备管理器屏幕截图失败

我正试图在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)

android screenshot android-virtual-device android-studio

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

iOS比较标签的价值

我正在使用标签来显示函数的字符串结果.但是我有一个存储前一个结果的类变量,我需要根据不同的条件以不同的方式更新该变量.我写的代码是

    if(displayPassword.text == @"Memorable")
    {
        prevpass = [newPassword returnPassword];
    }
    else 
    {
        prevpass = displayPassword.text;
    }
Run Code Online (Sandbox Code Playgroud)

然而它总是跳转到else,因为它似乎在调试下显示displayPassword.text总是空的depsite它显示一个值.

if-statement uilabel ios

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