加入收藏 | 设为首页 | Life家族 | SCMLife | RMLife | PMLife | SQALife | TESTLife | 企业VIP专区 | 中文化荣誉殿堂
 
发新话题
打印

[求助] 请大家帮忙把vc的程序转成vbscript!谢谢!( 此文章被查看:569次,被回复:3篇!! )

请大家帮忙把vc的程序转成vbscript!谢谢!

复制内容到剪贴板
代码:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "checksum.h"
#include <stdio.h>
#include <io.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TMainForm *MainForm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnfilepathClick(TObject *Sender)
{
  if(OpenFile->Execute())
  {
    edtfilepath->Text = OpenFile->FileName;
  }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::btnchecksumClick(TObject *Sender)
{
  if(edtfilepath->Text == "")
  {
    Application->MessageBoxA("请选择文件!","ERROR",48);
  }
  else
  {
    FILE *file;
    int sum = 0,file_no,i = 0;
    //long filesize = 0;
    HANDLE FileHandle = CreateFile((edtfilepath->Text).c_str(),
  GENERIC_READ,    // Read only required
  FILE_SHARE_READ, // read share file
  NULL,            // SecurityAttributes - none in Win95
  OPEN_EXISTING,   // how to create
  FILE_FLAG_SEQUENTIAL_SCAN,  // file attributes
  NULL             // handle of file with attributes to copy
  );
    if(FileHandle == INVALID_HANDLE_VALUE)
    {
      Application->MessageBoxA("Open File Error!","ERROR",48);
    }
    /*if((file = fopen((edtfilepath->Text).c_str(),"r")) == NULL)
    {
      Application->MessageBoxA("Open File Error!","ERROR",48);
    }*/
    else
    {
      unsigned long  dwRead;
      DWORD dataSize  = GetFileSize(FileHandle, NULL);
      unsigned char* ptrBufChk=(unsigned char*)new char[dataSize];
      ReadFile (FileHandle, ptrBufChk, dataSize, &dwRead, NULL);
      //file_no = fileno(file);
      //filesize = filelength(file_no);
      //char *buffer = (char*)new char[dataSize];
      //fscanf(file,"%s",buffer);
      //fread(buffer,1,filesize,file);
      /*while(k<dataSize)
      {
        ptrBufChk[k] += 0x00000100;
        k++;
      }*/
      unsigned int j = ptrBufChk[2];
      while(i<dataSize)
      {
        sum = (sum + ptrBufChk)&0xFFFF;
        i++;
      }
      unsigned long iFixLength = (dataSize<=0x800000) ? 0x800000 : 0x1000000;
      for(;i<iFixLength;i++)
      {
        sum = (sum + 0xff)& 0xffff; // & 0xffff
      }
      edtchecksum->Text = (AnsiString)"0x" +(AnsiString)(IntToHex((int)(sum&0xFFFF), 4));
      CloseHandle(FileHandle);
      delete ptrBufChk;
    }
  }
}
//---------------------------------------------------------------------------



© 本文为 听雨屋檐人SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
clearcase+clearquest个人博客:听雨屋檐人的博客
听雨屋檐人的淘宝小店!:听雨屋檐人的淘宝小店,欢迎光临

TOP

定起来!



© 本文为 听雨屋檐人SCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员
clearcase+clearquest个人博客:听雨屋檐人的博客
听雨屋檐人的淘宝小店!:听雨屋檐人的淘宝小店,欢迎光临

TOP

回复 沙发 的帖子

我想问问你的这个程序想实现什么功能,可以重新写一个。
只要描述清楚,我觉得写起来并不难。



© 本文为 yunshanSCMLife 共同所有,未经同意,请勿转载 ©如该文侵犯了您的版权,请联系管理员

TOP

while(i<dataSize)
      {
        sum = (sum + ptrBufChk)&0xFFFF;
        i++;
      }
      unsigned long iFixLength = (dataSize<=0x800000) ? 0x800000 : 0x1000000;
      for(;i<iFixLength;i++)
      {
        sum = (sum + 0xff)& 0xffff; // & 0xffff
      }
      edtchecksum->Text = (AnsiString)"0x" +(AnsiString)(IntToHex((int)(sum&0xFFFF), 4));
      CloseHandle(FileHandle);
      delete ptrBufChk;
    }

就是这个累加的算法!实现checksum值的算法

© 本文为 听雨屋檐人 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
clearcase+clearquest个人博客:听雨屋檐人的博客
听雨屋檐人的淘宝小店!:听雨屋檐人的淘宝小店,欢迎光临

TOP

发新话题