C++Builder 程序员博客
1 Sep
想用cb6中的web services控件读取网页的源文件(http://money.finance.sina.com.cn/quotes_service/view/vMS_tradedetail.php?symbol=sh600980&date=2010-08-31&page=1),但是只需要源文件中的一部分,然后将指定的数据导入到数据库中。首先这些个控件俺不会用,再就是我想写2个类,一个是应付不同的网页进行读取,另一个是对应相应的数据库将数据导入。
请高手指点!
菜鸟来也,职业顶帖
这个里面的数据是动态生成的,估计你读不出来
14 Aug
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数据就因该能避免这个问题了
<
看来得不到结果了。
12 Jul
有一个游戏手柄是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分钟前上传的呵呵
3 Jul
怎么用BCB读取word文档中表格中的数据?
现有一个word文档,除了首尾行是标题和结尾外,中间部分是一个类似:姓名()、性别()之类的不规则表格。
现在怎么用bcb做一个程序,把姓名、性别对应后面的单元格里的数据读出来校验一下,然后再存入数据库的一个表中?
读表格不是问题,重要的是你的表格里单元格的布局。
如果你的项目不涉及保密内容,可以将需要读取的表格文件还有需要读取的单元格内容发给我,我帮你分析一下。cbfans#163.com
2楼的朋友,我给你发过去了,请查收并恳请帮助!万分感谢!
好,晚上我会回复你。不要着急。
刚才我检查了一下邮箱,你没有把Word文档发给我。
刚才忘记发附件了,我又发了一遍。望查收!谢谢。我明天急用。拜托!了
妖哥真是大好人!
好人呀,好人
请教下。。具体是怎么做的啊··
我的邮箱sjg583@163.com 谢谢!!!
<
等着学习
没有消息
楼主你来了?我等你好久. 我依旧没有收到你发来的表格文件.可能是被163信箱水产了.你最好是压缩成zip再发给我.
好的,你加我QQ 621150
我用我的大马甲QQ加你.
很不错的
数据恢复少废话 舒服
妖哥就是狠!厉害。
结帖!
好人呐~~
能不能授之以渔呀
妖哥厉害啊
2 Jul
怎么用BCB读取word文档中表格中的数据?
现有一个word文档,除了首尾行是标题和结尾外,中间部分是一个类似:姓名()、性别()之类的不规则表格。
现在怎么用bcb做一个程序,把姓名、性别对应后面的单元格里的数据读出来校验一下,然后再存入数据库的一个表中?
读表格不是问题,重要的是你的表格里单元格的布局。
如果你的项目不涉及保密内容,可以将需要读取的表格文件还有需要读取的单元格内容发给我,我帮你分析一下。cbfans#163.com
2楼的朋友,我给你发过去了,请查收并恳请帮助!万分感谢!
好,晚上我会回复你。不要着急。
刚才我检查了一下邮箱,你没有把Word文档发给我。
刚才忘记发附件了,我又发了一遍。望查收!谢谢。我明天急用。拜托!了
妖哥真是大好人!
好人呀,好人
请教下。。具体是怎么做的啊··
我的邮箱sjg583@163.com 谢谢!!!
<
等着学习
没有消息
楼主你来了?我等你好久. 我依旧没有收到你发来的表格文件.可能是被163信箱水产了.你最好是压缩成zip再发给我.
好的,你加我QQ 621150
我用我的大马甲QQ加你.
很不错的
数据恢复少废话 舒服
妖哥就是狠!厉害。
结帖!
20 Apr
读取数组的指针越界了,怎么系统不自动报错呢
在bcb写程序的时候,偶尔就会出现access violation错误
今天,我故意弄了一个10元素数组,
读取的时候,读array[12]的元素,结果系统不报错。
怎么让系统在指针越界的时候都自动报错呢?
C++给了你一把刀,你可以杀敌人,也可以自杀,呵呵
谢谢两位了。
12 Mar
在C++Builder中如何读取路径为AnsiString的文件?(使用FileRead、fopen等文件时都要求文件路径必须是常量constString,那么当文件路径为AnsiString的变量时应该如何读取文件呢?)
如果是文本文件,可以用TStringList的LoadFromFile,它的参数就是AnsiString类型的
可以结贴了。
恩,搞定了,谢谢!
22 Jan
如题
先用数据库控件读出流文件
然后转给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
12 Apr
1.做一东西,需要从Recent文件夹读取最近打开的文档,但不知道怎么从快捷方式中读取真实的文件路径?
或根据一文件名读出文件的真实路径。
比如:1.txt;路径为C:\123\1.txt
试图使用GetModuleFileName来读取,但发现此函数只能读取exe或dll的路径;
GetFullPathName读出的也只是当前程序的路径;
2.用钩子能否监视最新打开的进程,应用程序?
可以的话,该怎样去作?
使用API!
想down又没分……呜呜……
不过自己有写过,不是很完美,LZ上msdn找一下吧,关键字:IShellLinkW,IPersistFile,CoCreateInstance
1.做一东西,需要从Recent文件夹读取最近打开的文档,但不知道怎么从快捷方式中读取真实的文件路径?
从注册表下手, 应该有完整的路径.
谢各位;
昨晚也在想从注册表下手
现一一尝试
以下是一个简单例子:
#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
1 Apr
首先我是新手,很多东西都不懂,相关帖子看了还是不懂。
我用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前面的程序,我测试通过立刻给分!
不会吧 我什么操作都没做,只是设定了一下数据类型
你需要设置数据库该字段为BLOB类型,然后将图片以一个文件的方式存入数据库即可,使用DBImage和使用DBEdit是一样的.
在sql server 2000 里面我没有找的这个类型 请问具体怎么设置 我是新手 谢谢!
SqlServer可以用 image 可变长度二进制数据介于 0 与 231-1 (2,147,483,647) 字节之间
你可以用TDBImage绑定数据字段后直接用DBImage保存和读取图片。
TBlobField
http://topic.csdn.net/t/20020920/15/1040069.html