我爱builder

C++Builder 程序员博客

想用cb6中的web services控件读取网页的源文件(http://money.finance.sina.com.cn/quotes_service/view/vMS_tradedetail.php?symbol=sh600980&date=2010-08-31&page=1),但是只需要源文件中的一部分,然后将指定的数据导入到数据库中。首先这些个控件俺不会用,再就是我想写2个类,一个是应付不同的网页进行读取,另一个是对应相应的数据库将数据导入。
请高手指点!
菜鸟来也,职业顶帖这个里面的数据是动态生成的,估计你读不出来

  • Filed under: C++ Builder
  • bool CUSBTestDlg::USBDataRead(void)
    {
      if (!DeviceIoControl(hUSBHandle,IOCTL_EZUSB_BULK_READ,&DataReadrequest,VCTLNUM,rd_data,USB_READNUM,&rcnt,NULL))
      {

      return false;
      }
      else
      return true;  
    }

    情况是这样的,通过usb读取Flash里面的数据,数据有很多,不停的读,每次读取一部分,读取如上面代码;正常情况下能读取数据,当数据读完了后,程序就停在DeviceIoControl这个语句这里了,就是程序还在等着数据过来。想退出也退出不了,必须拔掉usb设备,请问没有数据后如何退出这个语句,或者有什么别的好办法,谢谢!这个真不知道,呵呵,帮顶吧谢谢zzbinfo
    可怜啊,没人关注啊底下的驱动不好,
    或者设成异步方式的可以判断没有数据传入的时候,closehandle,closehandle(hUsbhandle) wwyyxx26:下面是设成异步方式时,可还是不行,还是停在DeviceIoControl 处
    hEvent = CreateEvent(NULL,false,false,NULL);
      Cap=new CapData(true);//这里是线程
      Cap->Priority =tpNormal;
      Cap->Resume();
      SetEvent(hEvent);
    //————————————————–

    bool CUSBTestDlg::USBDataRead(void)
    {
      OVERLAPPED osReader ;
      memset( &osReader, 0, sizeof(OVERLAPPED));
      osReader.hEvent = hEvent;
      if (!DeviceIoControl(hUSBHandle,IOCTL_EZUSB_BULK_READ,&DataReadrequest,VCTLNUM,rd_data,USB_READNUM,&rcnt,&osReader))
      {

      return false;
      }
      else
      return true; //return rcnt;
    }

    //———————————————————-

    //下面是在线程内读取数据

    if(!USBTest.USBDataRead())break;
      DWORD retW =WaitForSingleObject(hEvent ,2000) ;
      if(retW==WAIT_TIMEOUT )
      {
      break;//这里总是进不了
      }

    anarki1234:那样关不掉帮顶。

    帮顶一下wwyyxx26:我想可能也要改驱动,可驱动不会改啊,可怜啊。你说固件程序的问题,应该怎么修改啊?多谢了!CloseHandle(hUSBHandle)不可以吗?这样关不掉
    <
    噢。。那可能不一样。。 我是用的createfile创建的句柄给hHandle
    结束的时候判断这个句柄是不是INVALID_HANDLE_VALUE 如果不是的话 closehandle就可以了。。。
    正常情况下我也是这样关闭的,也能关掉。就是读取数据时,如果没有数据往上传输了,程序就停在DeviceIoControl这里了,再closehandle就关不掉了。
    <
    知道数据量m就好办啊,只读m数据就因该能避免这个问题了<
    看来得不到结果了。

  • Filed under: C++ Builder
  • 有一个游戏手柄是USB的,请问怎么用程序读到他按下的每一个键,谢谢。http://blog.csdn.net/zhouzhangkui/archive/2009/10/08/4640882.aspx获取游戏手柄的按键输入
    http://it.china-b.com/cxsj/vc/20090612/102500_1.html上pudn在CBuilder中如何控制游戏手柄,对手柄编程http://www.pudn.com/downloads215/doc/comm/detail1013403.html在C++Builder中如何使用游戏操纵杆http://download.csdn.net/source/2536415谢谢各位的回复
    1楼:你的链接似乎和本题无关
    2楼:你的链接里广告不少
    3楼:我发现一个怪事,我看你是14点回复的,我刚才去下载的时候确显示是7分钟前上传的呵呵

  • Filed under: C++ Builder
  • 怎么用BCB读取word文档中表格中的数据?
    现有一个word文档,除了首尾行是标题和结尾外,中间部分是一个类似:姓名()、性别()之类的不规则表格。
    现在怎么用bcb做一个程序,把姓名、性别对应后面的单元格里的数据读出来校验一下,然后再存入数据库的一个表中?读表格不是问题,重要的是你的表格里单元格的布局。如果你的项目不涉及保密内容,可以将需要读取的表格文件还有需要读取的单元格内容发给我,我帮你分析一下。cbfans#163.com2楼的朋友,我给你发过去了,请查收并恳请帮助!万分感谢!好,晚上我会回复你。不要着急。刚才我检查了一下邮箱,你没有把Word文档发给我。刚才忘记发附件了,我又发了一遍。望查收!谢谢。我明天急用。拜托!了妖哥真是大好人!好人呀,好人请教下。。具体是怎么做的啊··我的邮箱sjg583@163.com 谢谢!!!<
    等着学习没有消息楼主你来了?我等你好久. 我依旧没有收到你发来的表格文件.可能是被163信箱水产了.你最好是压缩成zip再发给我.好的,你加我QQ 621150我用我的大马甲QQ加你.很不错的数据恢复少废话 舒服

    妖哥就是狠!厉害。
    结帖!好人呐~~能不能授之以渔呀妖哥厉害啊

  • Filed under: C++ Builder
  • 怎么用BCB读取word文档中表格中的数据?
    现有一个word文档,除了首尾行是标题和结尾外,中间部分是一个类似:姓名()、性别()之类的不规则表格。
    现在怎么用bcb做一个程序,把姓名、性别对应后面的单元格里的数据读出来校验一下,然后再存入数据库的一个表中?读表格不是问题,重要的是你的表格里单元格的布局。如果你的项目不涉及保密内容,可以将需要读取的表格文件还有需要读取的单元格内容发给我,我帮你分析一下。cbfans#163.com2楼的朋友,我给你发过去了,请查收并恳请帮助!万分感谢!好,晚上我会回复你。不要着急。刚才我检查了一下邮箱,你没有把Word文档发给我。刚才忘记发附件了,我又发了一遍。望查收!谢谢。我明天急用。拜托!了妖哥真是大好人!好人呀,好人请教下。。具体是怎么做的啊··我的邮箱sjg583@163.com 谢谢!!!<
    等着学习没有消息楼主你来了?我等你好久. 我依旧没有收到你发来的表格文件.可能是被163信箱水产了.你最好是压缩成zip再发给我.好的,你加我QQ 621150我用我的大马甲QQ加你.很不错的数据恢复少废话 舒服

    妖哥就是狠!厉害。
    结帖!

  • Filed under: C++ Builder
  • 读取数组的指针越界了,怎么系统不自动报错呢
    在bcb写程序的时候,偶尔就会出现access violation错误

    今天,我故意弄了一个10元素数组,
    读取的时候,读array[12]的元素,结果系统不报错。
    怎么让系统在指针越界的时候都自动报错呢?

    C++给了你一把刀,你可以杀敌人,也可以自杀,呵呵谢谢两位了。

  • Filed under: C++ Builder
  • 在C++Builder中如何读取路径为AnsiString的文件?(使用FileRead、fopen等文件时都要求文件路径必须是常量constString,那么当文件路径为AnsiString的变量时应该如何读取文件呢?)

    如果是文本文件,可以用TStringList的LoadFromFile,它的参数就是AnsiString类型的可以结贴了。恩,搞定了,谢谢!

  • Filed under: C++ Builder
  • 如题先用数据库控件读出流文件
    然后转给GDI 不是GDI是GDI+

    主是是IStream 与 MemoryStream 的转换

    看了阿发伯的blog
    bool __fastcall GetImageEncoderClsid(AnsiString format, PGUID Clsid)
    {
        UINT num, size = 0;
        DllExports::GdipGetImageEncodersSize(&num, &size);
        if (size == 0) return false;
        ImageCodecInfo *Info = (ImageCodecInfo*)DllExports::GdipAlloc(size);
        if(Info == NULL) return false;
        UINT i = 0;
        try
        {
            DllExports::GdipGetImageEncoders(num, size, Info);
            for (; i < num && CompareText(Info[i].MimeType, format) != 0; i ++);
            if (i < num)
                memcpy(Clsid, &Info[i].Clsid, sizeof(TGUID));
        }
        __finally
        {
            DllExports::GdipFree(Info);
        }
        return i < num? true : false;
    }

    void __fastcall TGdipBitmap::SaveToStream(Classes::TStream* Stream)
    {
        TGUID Clsid;
        if (ImageFormat != "" && GetImageEncoderClsid(ImageFormat, &Clsid))
        {
            Gdiplus::Bitmap Image(Handle, Palette);
            TStreamAdapter *Adapter = new TStreamAdapter(Stream, soReference);
            Adapter->_AddRef();
            try
            {
                if (Image.Save((IStream*)*Adapter, &Clsid) != Ok)
                    throw new Exception("Save Image fail");
            }
            __finally
            {
                Adapter->_Release();
            }
        }
        else
            TBitmap::SaveToStream(Stream);
    }

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/maozefa/archive/2007/07/12/1685930.aspx

    没有太明白怎么用BLOG

  • Filed under: C++ Builder
  • 1.做一东西,需要从Recent文件夹读取最近打开的文档,但不知道怎么从快捷方式中读取真实的文件路径?
    或根据一文件名读出文件的真实路径。
    比如:1.txt;路径为C:\123\1.txt
    试图使用GetModuleFileName来读取,但发现此函数只能读取exe或dll的路径;
    GetFullPathName读出的也只是当前程序的路径;

    2.用钩子能否监视最新打开的进程,应用程序?
    可以的话,该怎样去作?

    使用API!

    想down又没分……呜呜……

    不过自己有写过,不是很完美,LZ上msdn找一下吧,关键字:IShellLinkW,IPersistFile,CoCreateInstance

    1.做一东西,需要从Recent文件夹读取最近打开的文档,但不知道怎么从快捷方式中读取真实的文件路径?

    从注册表下手, 应该有完整的路径.

    谢各位;
    昨晚也在想从注册表下手
    现一一尝试

    以下是一个简单例子:

    C/C++ code
    #define NO_WIN32_LEAN_AND_MEAN #include <shlobj.hpp> #include <vcl.h> // 以上三行放在.cpp文件最顶部 //————————————————————————— struct TShortcutCfg { TShortcutCfg() { nShowCmd = SW_SHOWNORMAL; wHotKey = 0; nIconIndex = 0; } // 结构成员: AnsiString strShortcutName; // AnsiString strLnkDir; // AnsiString strDestFile; // AnsiString strArguments; // AnsiString strIconFile; // int nIconIndex; // AnsiString strWorkingDir; // AnsiString strDescription; // WORD wHotKey; // int nShowCmd; // }; //————————————————————————— // 读取快捷方式的信息 // Example: // TShortcutCfg scShortcut; // if (ReadShortcut(&scShortcut, "C:\\WINDOWS\\SENDTO\\Proton.lnk")) // ShowMessage("快捷方式 " + scShortcut.strShortcutName + // " 的目标文件是 " + scShortcut.strDestFile); //————————————————————————— bool ReadShortcut(TShortcutCfg *scConfig, AnsiString strFileName) { bool bReturn = true; wchar_t wszBuf [MAX_PATH]; char szBuf[MAX_PATH]; IShellLink *pShellLink; strFileName.WideChar(wszBuf, MAX_PATH); if (bReturn) { bReturn = (CoInitialize(NULL) == S_OK); if (bReturn) { bReturn = CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void **)&pShellLink) >= 0; if (bReturn) { IPersistFile *ppf; bReturn = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf) >= 0; if (bReturn) { bReturn = ppf->Load(wszBuf, TRUE) >= 0; if (bReturn) { pShellLink->GetPath(szBuf, MAX_PATH, NULL, 0); scConfig->strDestFile = AnsiString(szBuf); pShellLink->GetArguments(szBuf, MAX_PATH); scConfig->strArguments = AnsiString(szBuf); // 图标 int nIconIndex = 0; if (pShellLink->GetIconLocation(szBuf, MAX_PATH, &nIconIndex) == NOERROR) { scConfig->strIconFile = AnsiString(szBuf); scConfig->nIconIndex = nIconIndex >= 0 ? nIconIndex : 0; } // 起始位置 pShellLink->GetWorkingDirectory(szBuf, MAX_PATH); scConfig->strWorkingDir = AnsiString(szBuf); // 备注 pShellLink->GetDescription(szBuf, MAX_PATH); scConfig->strDescription = AnsiString(szBuf); // 快捷键 pShellLink->GetHotkey(&scConfig->wHotKey); // 显示方式 pShellLink->GetShowCmd(&scConfig->nShowCmd); } ppf->Release (); } pShellLink->Release (); } CoUninitialize(); } if (bReturn) { scConfig->strLnkDir = IncludeTrailingBackslash(ExtractFilePath(strFileName)); strFileName = ExtractFileName(strFileName); scConfig->strShortcutName = strFileName.Length() ? strFileName.SubString(1, strFileName.Length() - ExtractFileExt(strFileName).Length()) : EmptyStr; } } return bReturn; } //————————————————————————— // 获取特殊目录的真实路径 AnsiString __fastcall GetSpecialFolder(int nFolder) { LPITEMIDLIST pidl; LPMALLOC pShellMalloc; char szDir[MAX_PATH]; AnsiString strSpacialFolder; if (SUCCEEDED(SHGetMalloc(&pShellMalloc))) { if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, nFolder, &pidl))) { if (SHGetPathFromIDList(pidl, szDir)) { strSpacialFolder = AnsiString(szDir); if (!strSpacialFolder.IsPathDelimiter(strSpacialFolder.Length())) strSpacialFolder = AnsiString(szDir) + "\\"; } pShellMalloc->Free(pidl); } pShellMalloc->Release(); } return strSpacialFolder; } //————————————————————————— // 列举特殊目录下所有的项目 int __fastcall GetAllItemFromDir(int nFolder, TStrings *pList) { String strPath = GetSpecialFolder(nFolder); WIN32_FIND_DATA wfd; int nCount = 0; HANDLE hFile = FindFirstFile((strPath + "*.*").c_str(), &wfd); if (hFile) { if (strcmp(wfd.cFileName, ".") && strcmp(wfd.cFileName, "..")) { pList->Add(wfd.cFileName); nCount++; } while (FindNextFile(hFile, &wfd)) { if (strcmp(wfd.cFileName, ".") && strcmp(wfd.cFileName, "..")) { pList->Add(wfd.cFileName); nCount++; } } } FindClose(hFile); return nCount; } //————————————————————————— // 使用举例,列举RECENT目录所有项目到ListBox中并将RECENT目录的真实路径显示在Edit中 void __fastcall TForm1::Button1Click(TObject *Sender) { Edit1->Text = GetSpecialFolder(CSIDL_RECENT); GetAllItemFromDir(CSIDL_RECENT, ListBox1->Items); } //————————————————————————— // 双击ListBox的某一项,显示该快捷方式的目标文件信息 void __fastcall TForm1::ListBox1DblClick(TObject *Sender) { if (ListBox1->ItemIndex > -1) { TShortcutCfg scShortcut; if (ReadShortcut(&scShortcut, Edit1->Text + ListBox1->Items->Strings[ListBox1->ItemIndex])) ShowMessage(String().sprintf( "快捷方式:%s\r\n目标文件:%s", scShortcut.strShortcutName, scShortcut.strDestFile)); } }

    多谢,现在尝试下!

    还有,那个钩子的问题?谁能解答下
    该使用那种钩子

    自己UP

  • Filed under: C++ Builder
  • 首先我是新手,很多东西都不懂,相关帖子看了还是不懂。
    我用c++builder 6.0 的ADO控件与SQL server 2000相连,想要用DBimage 控件读取数据库中的图片。
    问题1:sql server里面图片类型怎么设?

    我设置过image 填写数据时显示 <Binary> 我不会SQl语言 所以不知道怎么单独把图片写进数据库
    我还设置varchar 填写数据时 我把图片(bmp和jpg格式的都试过)的路径写进去 但是用BCB–>ADOconnection–>ADOquery–>DBImage 显示不出来

    问题2:如果我利用BCB将图片写进数据库,并且以后再调用时还能显示,我该怎么设置或编写语句?

    希望你能说得具体些,不要COPY前面的程序,我测试通过立刻给分!

    不会吧 我什么操作都没做,只是设定了一下数据类型

    引用 1 楼 BORLANDSUN 的回复:
    数据显示 <Binary>说明图片已经存到数据库中了.

    你需要设置数据库该字段为BLOB类型,然后将图片以一个文件的方式存入数据库即可,使用DBImage和使用DBEdit是一样的.

    在sql server 2000 里面我没有找的这个类型 请问具体怎么设置 我是新手 谢谢!

    引用 3 楼 ydlchina 的回复:
    你需要设置数据库该字段为BLOB类型,然后将图片以一个文件的方式存入数据库即可,使用DBImage和使用DBEdit是一样的.

    SqlServer可以用 image 可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间
    你可以用TDBImage绑定数据字段后直接用DBImage保存和读取图片。

    TBlobField

    http://topic.csdn.net/t/20020920/15/1040069.html

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档