给大家拜个晚年:大家新年好!下面是我在寒假做程序时遇到的问题,都是难了我一个假期的东西,有一定难度,各位在帮忙解答时,用大写一二表示大题号,用小写12表示内部小问题。谢谢了!//==================================================================
一、小弟想做一个实用小程序,有如下的一些内容(见下) ……
{S1}+{V1}+{V2}+{S2}:3,1.321819e-003%
……
{S1V}+{V1}+{V2}+{S2}:1,4.406063e-004%
…… 程序是这样的:冒号后面有个数字,首先求出所有数字的和,然后用每一行的数字去除这个总和,得到就是逗号后面的百分数。 我想用RichEdit组件实现这个功能,构思是:一行一行的取,先从头取出一行,然后用strstr(line_content.c_str(),":"来判断是否有冒号,如果有的话,就取出后面的数字加到总和中去;如果没有则继续下一行。取出总和后,然后再运行求百分比程序,每求出一行,就在该行的后面加上这个百分数,并将他写道另一个RichEdit中,RichEdit_2->Lines->Add()。 可是我遇到的问题是:1。如何取出一行并转到下一行?2。如果第一个问题解决了,那么如何取出冒号后的数字? 当然了,如果大家有好的方法,请不吝赐教,小弟不胜感激!//=================================================================
二、 如何找到光盘的磁盘?
小弟做了一个软件,想做成光盘出售,为了保护版权,小弟决定通过用光盘的磁盘号加密来实现软件的保护,即:先取出光盘的磁盘号,然后进行加密,加密后得到的字符串就是软件的安装序列号,这样可以防止用户的光盘拷贝了。
遇到的问题:
1. 光盘未刻录以前的序列号和刻录之后的序列号是否一致?
2. 如何用程序自动找到光盘驱动磁盘并取出盘符,如:F:,并进行光盘是否插入的判断?//==================================================================
三、 如何将一个DBGrid分别导出为Excel和网页两种形式?//==================================================================
四、关于dll文件的几点疑问: 1. dll文件如何动态装入?(我看过几篇文章,都没有实现,您能否给详细的解释一下?)
2. 如果我想将一个事件装入dll,如:Button1Click 装入dll,其中包含了本窗体和其他窗体的一些内容,这样的话我该怎样实现?//==================================================================
五、事件能否共用? 有些事件,如Button1与Button2的Click事件可能一样,如果在它们的OnClick事件中都写上一样的内容的话,程序就会显得臃肿,有没有简便的方法?如函数的直接调用?//==================================================================
六、如何自动生成组件? 做一个课程输入表单,可是有的学期是六门课,有的学期是七门,如何根据数字——6或者7来自动生成edit组件,如果是6,那就定义6个edit组件,如果是7就定义7个edit组件,如何实现?//------------------------------------------------------------------
小弟电子邮件是:[email protected],如果有好的程序例子,希望能给小弟发一份,谢谢!最后,非常感谢大家的热心与帮助,谢谢!
一、小弟想做一个实用小程序,有如下的一些内容(见下) ……
{S1}+{V1}+{V2}+{S2}:3,1.321819e-003%
……
{S1V}+{V1}+{V2}+{S2}:1,4.406063e-004%
…… 程序是这样的:冒号后面有个数字,首先求出所有数字的和,然后用每一行的数字去除这个总和,得到就是逗号后面的百分数。 我想用RichEdit组件实现这个功能,构思是:一行一行的取,先从头取出一行,然后用strstr(line_content.c_str(),":"来判断是否有冒号,如果有的话,就取出后面的数字加到总和中去;如果没有则继续下一行。取出总和后,然后再运行求百分比程序,每求出一行,就在该行的后面加上这个百分数,并将他写道另一个RichEdit中,RichEdit_2->Lines->Add()。 可是我遇到的问题是:1。如何取出一行并转到下一行?2。如果第一个问题解决了,那么如何取出冒号后的数字? 当然了,如果大家有好的方法,请不吝赐教,小弟不胜感激!//=================================================================
二、 如何找到光盘的磁盘?
小弟做了一个软件,想做成光盘出售,为了保护版权,小弟决定通过用光盘的磁盘号加密来实现软件的保护,即:先取出光盘的磁盘号,然后进行加密,加密后得到的字符串就是软件的安装序列号,这样可以防止用户的光盘拷贝了。
遇到的问题:
1. 光盘未刻录以前的序列号和刻录之后的序列号是否一致?
2. 如何用程序自动找到光盘驱动磁盘并取出盘符,如:F:,并进行光盘是否插入的判断?//==================================================================
三、 如何将一个DBGrid分别导出为Excel和网页两种形式?//==================================================================
四、关于dll文件的几点疑问: 1. dll文件如何动态装入?(我看过几篇文章,都没有实现,您能否给详细的解释一下?)
2. 如果我想将一个事件装入dll,如:Button1Click 装入dll,其中包含了本窗体和其他窗体的一些内容,这样的话我该怎样实现?//==================================================================
五、事件能否共用? 有些事件,如Button1与Button2的Click事件可能一样,如果在它们的OnClick事件中都写上一样的内容的话,程序就会显得臃肿,有没有简便的方法?如函数的直接调用?//==================================================================
六、如何自动生成组件? 做一个课程输入表单,可是有的学期是六门课,有的学期是七门,如何根据数字——6或者7来自动生成edit组件,如果是6,那就定义6个edit组件,如果是7就定义7个edit组件,如何实现?//------------------------------------------------------------------
小弟电子邮件是:[email protected],如果有好的程序例子,希望能给小弟发一份,谢谢!最后,非常感谢大家的热心与帮助,谢谢!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int Pos1,Pos2,Number;
AnsiString Line;
for (int I = 0; I < RichEdit1->Lines->Count; I++)
{
Line = RichEdit1->Lines->Strings[I];
Pos1 = Line.AnsiPos(";");
Pos2 = Line.AnsiPos(",");
if ((Pos1 != 0)&&(Pos2 != 0)&&(Pos2 > Pos1))
{
Number = StrToInt(Line.SubString(Pos1+1, Pos2-Pos1-1));
ShowMessage(IntToStr(Number));
}
}
}—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
void __fastcall TForm1::Button2Click(TObject *Sender)
{
String Drive;
for (char A = 'A'; A <= 'Z'; A++)
{
Drive = String(A) + String(':');
if (GetDriveType(Drive.c_str()) == DRIVE_CDROM)
{
ShowMessage(A);
if (_chdrive(A-64) != 0)
{
ShowMessage("未准备好");
}
}
}
}
—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
四:搜索一下,这样的例子很多
五:可以共用。在Button2的OnClick中选择Button1OnClick行了—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
六:
procedure TForm1.Button1Click(Sender: TObject);
var
I,Count,L: Integer;
begin
Count := 6;
L := 0;
for I := 1 to Count do
begin
with TEdit.Create(Self) do
begin
Name := 'Edit' + IntToStr(I);
Parent := Self;
Inc(L,100);
Left := L;
Top := 30;
Width := 50;
end
end;
end;—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————