24小时热门版块排行榜    

CyRhmU.jpeg
查看: 7595  |  回复: 145
本帖产生 1 个 程序强帖 ,点击这里进行查看

magic7004

金虫 (职业作家)

[交流] 【交流】VC++, C#, VB答疑专贴已有69人参与

帖主寄语


其实我是业余爱好者,不搞研究也不写论文,专业和工作都和编程基本没关系。只是喜欢胡搞瞎搞而已,所以对Windows编程比较熟悉,数值计算之类的就不懂了。

比较熟悉Windows编程,常用VB、VC++、C#。关于语言、语法和编译的问题,欢迎大家一起来交流讨论~.~



[ Last edited by 波不动 on 2010-1-8 at 19:44 ]
回复此楼
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

senlia

木虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
同志们 为什么 没有人提问题啊?
书到用时方恨少, 天涯何处无芳草.
5楼2009-11-22 19:48:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
余泽成(金币+3, 程序强帖+1): 谢谢参与应助! 2011-04-28 19:04:06
引用回帖:
Originally posted by moon345 at 2011-04-27 09:47:48:
我想通过vb把某一个excel表格的某两列的数据读取出来,存放在数组中,对读取的数据绘制曲线,然后再把数据存于另外一个excel,如何操作啊,毕设用到,我是菜鸟,不会,有高手给个例子或者教教我啊!!!

没想到现在用vb的还是这么多啊,
有2个办法:
1.ado当做数据库读
2.用excel对象

具体办法((我没具体测试,找的例子,你调试下)
第一种:
CODE:
dim   n   as   long
Dim   oConn   As   New   ADODB.Connection
Dim   oRS   As   New   ADODB.Recordset
oConn.Open   "Provider=Microsoft.Jet.OLEDB.4.0; "   &   _
                      "Data   Source=C:\Book1.xls; "   &   _
                      "Extended   Properties= " "Excel   8.0; " " "
oRS.Open   "Select   *   from   [Sheet1$] ",   oConn,   adOpenStatic
n   =   1
do   until   oRS.EOF
msgbox   "第 "   &   n   &   "   条记录,第一列: "   &   oRS.fields(1)   &   _
        ";第二列: "   &   oRS.fields(2)
n   =   n   +   1
oRS.Movenext
Loop
oRS.Close
oConn.Close

第二种:
CODE:
1、定义Excel操作变量

Dim objExcelFile As Excel.Application

Dim objWorkBook As Excel.Workbook

Dim objImportSheet As Excel.Worksheet

2、打开Excel进程,并打开目标Excel文件
Set objExcelFile = New Excel.Application
objExcelFile.DisplayAlerts = False
Set objWorkBook = objExcelFile.Workbooks.Open(strFileName)

Set objImportSheet = objWorkBook.Sheets(1)

3、获取Excel有效区域的行和列数
intLastColNum = objImportSheet.UsedRange.Columns.Count

intLastRowNum = objImportSheet.UsedRange.Rows.Count

4、逐行读取Excel中数据

由于前两行为Header部分,所以需要从第三行读取

如果第1到第10个单元格的值均为空或空格,则视为空行

For intCountI = 3 To intLastRowNum

''Check if Empty Data Row

blnNullRow = True

For intI = 1 To 10

If Trim$(objImportSheet.Cells(intCountI, intI).Value) <> "" Then

blnNullRow = False

End If

Next intI

若不是空行,则进行读取动作,否则继续向后遍历Excel中的行

If blnNullRow = False Then

获取单元格中的数据,做有效性Check,并将合法数据创建为实体存入对象数组中

objImportSheet.Cells(intCountI, 1).Value

……

End If
Next intCountI

5、退出Excel进程,并关闭Excel相关操作对象
objExcelFile.Quit
Set objWorkBook = Nothing
Set objImportSheet = Nothing

Set objExcelFile = Nothing

matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
101楼2011-04-27 18:19:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

help8789

铜虫 (小有名气)

★ ★
senlia(金币+2,VIP+0):鼓励新虫多发[回]点帖子 [灌水不行哦] 11-20 18:10
其实VB挺实用的
2楼2009-11-18 19:34:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
我也常用vb,不过都是写注册机啦!小东东而已!
努力学习!以正当途径!获得需要的知识!
3楼2009-11-20 15:21:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

引用回帖:
Originally posted by jjdg at 2009-11-20 15:21:
我也常用vb,不过都是写注册机啦!小东东而已!

注册机,好强大!

我用vb比较少用其实,最近VC用的多,不过已经在转型C#了
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
4楼2009-11-20 15:26:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nono2009

超级版主 (文学泰斗)

No gains, no pains.

优秀区长优秀区长优秀区长优秀区长优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by senlia at 2009-11-22 19:48:
同志们 为什么 没有人提问题啊?

问题慢慢会有的。
6楼2009-11-22 20:20:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

顶一下!!!
7楼2009-11-24 12:43:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

Wave No Move

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
nono2009(金币+1,VIP+0):奖励积极提问者! 11-25 17:03
还是没人问问题的话,那我来问一个问题。

就是平时自己编了一个函数方法之类的东西,如何把它封装成DLL,有什么条件没?以便以后可以随时调用。因为我看见我们老师就是这么用的。他编的FFT程序,就是一个dll文件,每次编其他程序都是直接调用。

我用的是VC++。
端好自己的碗,吃好自己的饭。
8楼2009-11-25 13:34:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

★ ★ ★ ★ ★
nono2009(金币+5,VIP+0):辛苦了! 11-25 17:04
引用回帖:
Originally posted by 波不动 at 2009-11-25 13:34:
还是没人问问题的话,那我来问一个问题。

就是平时自己编了一个函数方法之类的东西,如何把它封装成DLL,有什么条件没?以便以后可以随时调用。因为我看见我们老师就是这么用的。他编的FFT程序,就是一个dll文 ...

用VC++的话,只要设置一些编译参数,告诉编译器你要编译成DLL就可以了。不过比较麻烦,要设置好几个参数。

如果对这写编译参数不清楚的话,简单的办法是新建一个Win32 Dynamic-Link Library类型的工程,然后编写自己的函数。

要注意如果要写DllMain函数,DllMain函数一定要返回TRUE,否则的话加载Dll会失败。

如果Dll里的函数是要被VC++编写的C++程序调用,需要用_declspec(dllexport)表示Dll要导出这个函数。比如 bool _declspec(dllexport) MyFunc();
Exe中调用时要用_declspec(dllimport)表示从dll中导入函数。

如果Dll里的函数是要被用VC编写的C程序调用,还需要在_declspec(dllexport)前面加extern "C"表示函数需要被C程序调用,不要用C++的重命名规则,重命名函数。

如果是被其他编译器(比如VB)编写的程序调用,则不需要extern "C" _declspec(dllexport)了,但必须要在Dll工程中增加一个def文件(若不用def文件,也可以用#pragma),在def文件的EXPORTS部分规定导出的函数的函数名(或顺序)。而且函数的调用约定一定要是__stdcall(或者WINAPI)。

ps: VC编写的EXE,在编译时必须要指定DLL的Lib文件(默认设置在编译Dll时会在输出Dll的文件夹中生成Lib文件),否则连接器会报错。指定的方法是在Project Setting中选择Link页,然后Category选Input,在Object/Library modules中增加Lib文件的文件名,在Additional library path中输入Lib文件所在的文件夹。或者用#pragma指定也可以。

[ Last edited by magic7004 on 2009-11-26 at 09:39 ]
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
9楼2009-11-25 17:02:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

波不动

木虫 (正式写手)

Wave No Move


小木虫(金币+0.5):给个红包,谢谢回帖交流
senlia(金币+0,VIP+0):实习版主谢专家 呵呵 好玩儿 其实你是相当牛的 11-30 10:53
引用回帖:
Originally posted by magic7004 at 2009-11-25 17:02:


用VC++的话,只要设置一些编译参数,告诉编译器你要编译成DLL就可以了。不过比较麻烦,要设置好几个参数。

如果对这写编译参数不清楚的话,简单的办法是新建一个Win32 Dynamic-Link Library类型的工程,然 ...

非常感谢~~~!
端好自己的碗,吃好自己的饭。
10楼2009-11-25 19:19:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 magic7004 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见