新手告别低级新手党
delphi吧
全部回复
仅看楼主
level 7
OOPhappy 楼主
在Delphi吧受各位大神的帮助很久,一直不知道怎么感谢大家。最近发现到了学期末伸手党变多了。这些伸手党上来就要去给他一个程序,无非就是最近老师要交东西了,平时没学到,现在想找东西应付老师。一般这种帖子贴吧里面的大神都不会理睬的。因为贴吧大神是因为喜欢Delphi,你上来就要别人给你一个小的功能完全的软件。你是怎么想的?首先从情感上来说,我就不喜欢这样。你说你对事情的态度就不对。感觉就是对Delphi的不太尊重。虽然说有些人底子差,我什么都不会,但是你态度就不对,你不会语言你还不会思考?当然也不排除有一些新手实在是突然想学习开发软件但是碰到困难不知道怎么解决的初级菜鸟。我就写一篇这样的帖子来回馈那些新手。
首先声明本人只是一个刚毕业的软件专业的学生。以前大一的时候腰受伤,导致大一,二的时候专业课挂了好多。到了大二下学期病才好。曾经挂科濒临留级,老师找我谈话劝我留级,我以在全班面前承诺大二下学期不挂一门课的前提下能重修的都会过。大二下到大三刚好是学习最重的时候,我一边要重新学习挂的科目还有学习新的科目,困难很重。我估计跟许多伸手党一样,看见题目就头痛,感觉有别人给我做好了就好。但是我心里知道我学了一行就爱一行。不会我就开始重最基础的C开始学,然后新的课不会的我基本保证我能弄出来,虽然自己不知道为什么。然后2个月等我C学完了,再来看新的科目(一个学期还没有完),就发现知识点好了很多。然后慢慢弄,到了大三上学期全部挂的科目已经重新通过了,大三还获得了奖学金。我不想说我多nb,但是我只想把我的经验给许多处于新手党边缘的人一点经验帮助你早日脱离伸手党。
2013年12月23日 06点12分 1
吧务
level 14
赞一个!
2013年12月23日 06点12分 2
level 7
OOPhappy 楼主
新手首先最重要的是基础知识要扎实(我在退一步,你总要会)。不要虚编程软件,我知道很多新手虚编程软件就会说:我英语很差!看不懂英文单词。看不懂报错。我想说:你英文差能差够我?我当初高考英文只有55分。不是照样学。还有看不懂报错,是因为你看的少。你跟你新同学是第一天就能全部认识?还不是今天见一面,哦这是我同学,明天再看一眼。看多了就知道了。在说不知道报错你怕什么?百度,Google这些浏览器是干嘛的?你难道不知道“网上大神多如狗”这句话?差不多每个编程软件都有错误提示的,每一种错误提示都是有固定格式的,比如说[Error] RemindTime.pas(53): Undeclared identifier: 'MainFormHandle';你不懂原因先来百度翻译一下(个人更推荐使用Google翻译,它更专业):未声明的标识符:'MainFormHandle';这说明MainFormHandle这个方法没有声明。如果你到这里还不知道什么方法声明(那就说明你连基础知识都没学会),你就再百度一下。等你发现怎么百度上面给的东西都是C#,什么Java啊,这就告诉你方法声明是一个软件专业比较重要的知识点,你就要翻教科书了。由比如说:
[Error] RemindTime.pas(45): ':=' expected but '=' found你如果不懂同样Google一下,人家给的翻译结果是:[错误] RemindTime.pas(45):':='预期,但'='发现。也就是说,本来人家以为你的某个地方的符号是:=号,但是人家编译器编译的时候却发现的是=号,这就是说你在这条语句附近肯定是少了符号了,可能是赋值语句你少了:,也可能是这条语句的前面一点哪里少了符号。再比如你看到了翻译结果你还不知道为什么错了,你可以把这句子的原文就是英语报错放入百度里面(非百度翻译或者说是GOOGLE翻译),搜一下,然后你就找看看哪条搜索像,你打开之后,记住先看原因,因为有时候你的错误跟别人的错误是类型的,但是不是同一个,你要改的地方和别人的不一样。如果还不知道,你在到贴吧里面问大神或者网上问,这时候人家才会回答你。人家知道你是动了脑筋的,最起码你的诚意放在那了。
2013年12月23日 06点12分 3
55分大神,我只有初中水准
2014年01月03日 03点01分
level 7
OOPhappy 楼主
当然你认为自己做不出来的原因可能还有:老师没讲过,书上没有这种例题。以后等你找了工作你就会发现老师没教的,但是老板叫你用的多了去。书上没有,老师没讲,你可以在图书馆找,图书馆找不到再到网上找。你可能又会说,网上找不到?你考虑一下是不是你的题目太泛了太抽象了,你可以试着把你编程的软件按照功能来拆分,然后挨个的搜。我打个比方,你老师叫你做一个办公小助手,功能是给你一张存放可学生成绩的Exl文件,然后你自己统计最高分,平均分等结果生成一个Word文档。你上网搜教学小助手不一定能搜到。但你可以按照功能拆分为,访问Excel文件,操作Word文档。你可以试试,这2个完全搜的到。你这样只要学会了访问Excel文件和操作Word文档你自己再组装一下不就完成了你的题目?又或许你碰到的解决方案中有你不懂的新名词.比如要实现对Word文档的操作要用到Com接口,你不懂,以前也没碰到过。然后你就否决掉这个方案。那我问你,你为什么不去看看网上人家给的范例的代码再说?新名词就意味著难吗?就像高中数学大的题目,字多的就难吗?只要他的操作不难,你看不懂他官方给的解释你怕什么?又不叫你教书,写出它的定义。等你多用几次Com接口你就不怕了。这鬼东西用起来不难嘛。如果实在是找不到了你再发帖问:比如你说我要做一个程序让它比你的桌面系统先启动。是吧。人家大神自然会给你思路。比如人家给你思路说:桌面程序也是一个软件,只是开机之后系统最先调用是桌面系统。你再按人家给的思路去网上搜。搜不到你再问。
2013年12月23日 07点12分 4
level 7
OOPhappy 楼主
那么再说一下,你上网搜到类似的例子了,人家给出了一个代码示例的源文件。你怎么学习,你先下载,然后看看能不能运行,不能运行看看错误是什么,能解决的解决不能解决的下载别的例子,然后你开代码,可以设断点,找到你要的功能,仔细看,你看不懂的还是同样的上网搜。弄明白。一步一步下来。别想心急想吃成大胖纸。碰到问题别心急,别慌。
新手常问:学这个能赚钱还是学那个能赚钱。我的老师曾经说过:学哪个都可以赚钱,想赚到钱,你就必须学精。想学精必需花时间。代码行数是提高你能力唯一途径。所以你今天看这个赚钱学这个,明年学那个赚钱学那个。你永远赚不了比别人多的钱。要学好一门语言,最好的方法是兴趣。
2013年12月23日 07点12分 5
level 7
OOPhappy 楼主
下面我举个例子来看一下我做为一个新手如何编一个软件。首先选题,我就编写一个防止程序启动小助手,为了不太难,我给出2个需求,第一识别你要禁止的程序名称难道别太难了。第二个,让程序别被启动。
首先我的Delphi是自己感兴趣半年前自学的。所以我也不会如何禁止一个程序得启动。
我们做需求分析:第一个:我们如何识别要禁止的程序名?我们可不可以通过拖拽快捷方式防止一个程序启动?第二个:我们如何禁止程序得启动?
我们先来百度一下:Delphi如何禁止一个程序启动?看下面的截图。
我们看有答案,我们来打开第一个连接,
网址是http://zhidao.baidu.com/link?url=jSXqAhzbp9nUz3OjdLmbrchvTksvT-eMznln5iE7CxLdyWkaVzbdUBYn310BGGqPjYWguch_cTOzVOQRwO0yhK,然后我们先开Delphi然后把这段代码放进去,假设我很菜。运行一下,发现报错了,
我先翻译一下,发现人家报错是说:声明预期,但标识符“KillTask'发现,有也就是说本来是声明的时候发现调用。在假设我还不知道错哪了,好吧我再百度一下:放图片太麻烦了,你就按上面的来,我之间放我搜的网址:http://zhidao.baidu.com/link?url=krqcoac5fHQIZcgU9au7bQUisAhEhFbS4bk0cbvQs1D6hllJno-VL4sZlaJ5s6iQ9kuOsngLJWJwhxB8vyqcrq,人家说了,你使用这个函数的时候应该是在某个某个句柄下,详细的看上面给出的连接。也就是说上面那句话是用出了地方。我们把最后一句KillTask('QQ.exe');剪切。好吧我们再在界面拖一个按钮:点击按钮把我们刚才删的那句话贴到里面:打开QQ别登录,运行我们自己编的程序。点击按钮,你会发现没有用,为什么?先看看方法有没有执行。设断点。不会就百度。然后你运行你会发现这句语句执行了,为什么没有效果,那你盯住这KillTask('QQ.exe'),想想这个函数没有关闭QQ程序,有几个解释?我自己觉得有2个可能:1,这段方法根本就不能关闭程序;2:参数不对,什么意思呢,就是你的QQ的原名不叫QQ.exe。我第1种原因无法验证,那我就来验证第2种可能。找QQ的原名。怎么找?鼠标对准快捷方式->右击->属性(R),在弹出的属性框中,我们可以查看 目标 那一行,人家QQ的本名不叫QQ.exe而是叫QQProtect.exe,我们再把这个替换掉QQ.exe,变成KillTask('QQProtect.exe');然后你再运行QQ,接着运行我们自己编写的程序,点击鼠标,OK!Q被关了。这就说明有用。下面是代码:
Function KillTask(ExeFileName:string):integer;
const
PROCESS_TERMINATE = $0001;
var
ContinueLoop: BOOLean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
Result := 0;
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while Integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) =UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess(PROCESS_TERMINATE,BOOL(0),FProcessEntry32.th32ProcessID),0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
//下面这段代码是我们添加的按钮的点击事件
procedure TForm1.Button1Click(Sender: TObject);
begin
KillTask('QQProtect.exe');
end;
。那么剩下的一个功能,就请习惯的伸手党的新手自己按照我上面说的步奏自己来做。不会的话你可以再在这贴吧里面发帖,你看有没有人告诉你答案-100%有。
2013年12月23日 08点12分 6
level 11
建议精。大赞。求加友。
2013年12月23日 15点12分 9
level 12
学校的东西一般和工作的东西还有区别,刚工作的人还会有个阵痛期
2013年12月23日 23点12分 10
level 12
不管学了用来干什么,态度很重要,希望某些人能受到启发。
2013年12月24日 01点12分 11
level 12
j留名!太长没看完。。。
——来自 爱贴吧 Windows Phone 客户端
2013年12月24日 01点12分 12
level 7
OOPhappy 楼主
好吧,表示一大早看到这贴子受大家肯定,决定再写点。
首先,新手要考虑一下,你在大学或者是专科院校或者...反正就是你即将离开的技术培训的学校,你最应该学会的东西是什么?我想我自己在大学里面想了无数次,前面我自己都不知道是什么。等到了后面自己做毕业设计而且还要帮5个同学做毕业设计的时候,我才明白到自己比起同学来最大的一点就是解决问题的能力。因此我觉得最应该学会的是解决问题的能力。没错,老师是鼓励我们有不懂的可以问他们,但是你能确定你碰到了问题去找老师的时候人家有时间?还有我敢说你问老师老师也是给你一个方向最多教你一个类似的例子给你自己去悟。而且这样,我们不但养成了碰到问题就去找老师(当然这比那些碰到问题就不解决的强)和我们小时候摔倒了就靠大人扶没有太大的区别吧。而且你找老师,你的进度就要脱下来,今天没找到你就得到明天。这样很不利的。还有你毕业工作后,你找到了工作碰到了难点,谁给你解决?领导和同事会100%有空?如果你耽误了整个团队的工程进度你就完了。再退一步,假设你每次找同事同事都抽时间帮你解决,你老是问,人家会没意见,人家到底是工作的还是你的私人老师啊。你要做到自己动手丰衣足食。你哪怕自己最后实在不会,我想这样找人帮忙的次数恐怕要小很多吧。而起作为新手你没有发现我前面教的正是一种解决问题的方法吗?那可能你会问解决问题的能力怎么培养的?就是靠你一次碰到小问题自己积累的。我举个例子:我做毕设期间,有同一届的同学找我,他说他代码运行出了问题。我跑过去一看,ASP代码,我不会,我大三下选修的是自动化测试。我不急,我先问他是什么问题,他说运行增加用户的时候系统出错插不进去,我说你运行一遍,我看一下报错。结果一运行,人家添加的用户名为asd,然后插入我了个去,人家直接提示数据库写入被拒绝,什么空间无法容纳插入的值。我告诉他数据库有问题,你很有可能键设小了?他说什么?我一看他好像不懂就接着提示你做了SQL数据库的设计吗,他很肯定的说做了,然后我说打开我看看,人家一步一步打开我看了一下,他每做一个操作还跟我解释一下,自己在ASP里面也是这样做的。没有问题。到了关键的表他竟然停下来了说:“这一步一步的操作我核对了一天了。”,我说为什么不检查表,他表也在啊,这不是啊。我貌似知道了,他看到了提示认为问题是要么是键值不存在要么是表不存在。我说你问题出在了表的设计,肯定是表的键值设计小了,一打开我瞬间有种感觉他软件白学的感觉。用户名的键值设计的大小为char(1),而且其他的键值设计的也是char(1)。其实说到抵这个错误很简单,可是貌似平时大家都不太去用数据库,按道理课堂上老师有教过设计数据库,但是你不排除有失误的时候。但是这种错误提示不应该还想不到键值设小了。这就是一个碰到了问题平时很少自己动手的,然后那段时间刚好带他的毕设老师出差了。所以人家不知道怎么解决。
所以我感觉步入社会的最后一次学习,你应该学会的最重要的一点东西应该是解决问题的能力。这一点我至少目前感觉还是这样的。
2013年12月24日 03点12分 13
level 7
OOPhappy 楼主
新手提示
①用过的代码要看懂学会,不懂不会,就跟没有没区别。但是这句话不是说,你所有的用过代码你都要一次就会,你可以忘记1次或者是2次甚至是N次,但是你一点要有个尽头。你永远忘记,那你跟没有学是没区别的。
②你的解决问题的能力和你碰到的问题并且解决过的问题数目挂钩的。碰到问题不用慌,问题又不是人,又不会说:“小子是你啊,我以前怎么没碰到你”。这也不是你的错,这是大多数人的通病,对未知东西的恐惧。没碰到的东西都觉很恐怖。这也是中国人写的穿越剧是往以前穿越,因为这样,编剧可以安排故事的主角能知道下面会发生什么事。对于问题你不用怕,那到你尝试解决问题失败的话会怀孕或者说是产生核爆炸?不用怕。我介绍一下自己碰到了问题的办法,先看看是什么问题,然后分析问题会产生有什么可能的原因,挨个排除,排除到的最后一个就是原因的关键。然后如果你还是不知,可以把这原因在分解排除。如果分解到了最后你还不知道这就可以问别人了,因为这个时候往往是因为你不知某个东西才造成的。
③编程语言是相通的。这句话有3种人对我说过:老师,招聘的考官,最后是软件行业的前辈。你不用说,这个C难学我学C++,C++难学我学Delphi。没有这么一说,你挑来挑去时间都被你浪费了。
④对跟老师做项目的详细解释:新手普遍会有的顾虑:a.我不精通编程语言.b,我没时间,我要玩游戏。c,跟老师做项目,钱归老师。我一点好处都没有。
对此于b的新手我不想解释,不是说我鄙视这种同学,因为这种新手是把自己的享乐放第一位。我人生奉行的另一个准则是:做任何事都要你自己做决定,特别是别人无法保证别人的选择是100%对你有利。但是出了错你就不要后悔骂别人。”你玩游戏或许是说自己以后会成为一名像SKY一样的电竞选手,我们无法保证你不会,因此我不劝你,但是如果你以后没有成为他,想做回程序猿,也没人拦你,但是你要为次付出代价,比别人跟长的时间学代码,比别人更低的工作做事,受父母的念叨。这一切的后果自己承担。你别想你自己做的决定埋怨别人。我即想玩游戏,等我大学毕业了找不到合适的工作埋怨别人不阻止你。或者是你想玩游戏,但是你毕业了发现原来一个比打同样游戏比你差的出名了,你来埋怨父母或者是给你提供建议的。对于a类新手我想说:你去跟老师报名,老师知道你的实力,他会考虑他教你和你自学的进度赶不赶的上项目的进度。如果你太差了,老师不会要你的。你就要自己好好努力了。一般只要你去老师都会要的。我就有一个同学想读书了,跟老师做项目,虽然人家基础很差,但是老师还是带了。对于C类新手我可以这么说:钱你就别想要了,因为分你钱的可能性不大,顶多给你几百的辛苦费。但是你可以得到下面这几个东西:一,能力的提高,学习和做项目是不一样的,它很提高你的能力。一年前我还被老板一个人扔在大西北改造项目,那段时间的提高真是受用一生。二,你的经验。三,毕业后和用人单位谈得筹码。用人单位不可能把每个人都招上去,看看你有没有能力,他就看你跟老师做的项目这样就可以看到你是否有能力和你有了做项目的经验。这样你很容易被用人单位签走,比别人提前1个月签走或者提前一个月拿正式员工的工资。
⑤空闲的时候可以多看看一些专业型的网站,你看看人家资深老程序员前辈的经验建议,或者是看别人碰到的难题,保不准你以后也会碰到。先学就先会。
⑥保持一个良好的编程习惯。这个是无数编程界的前辈和招聘信息上强调的,你现在不需要懂这个东西有什么好处,等你能力上去了你就知道这样做的好处了。
2013年12月24日 03点12分 14
...不给钱 白干活 还是不好的.做项目也不一定非得跟着老师
2014年07月23日 09点07分
写的不错
2014年11月03日 13点11分
level 13
写得不错,哈哈,帮你顶一下。
2013年12月24日 16点12分 15
level 10
这篇帖子不仅仅适用于delphi,说白了,是对编程道路基本的认识,迷茫的同学可以看看。
2013年12月28日 17点12分 16
评价很高啊,谢谢。
2013年12月29日 01点12分
level 8
这种伸手党我直接忽视。。。什么玩意儿
2013年12月29日 02点12分 17
level 7
必须的
2013年12月29日 11点12分 18
level 6
楼主理解的很透彻,写的很好,赞一个。有空加我企鹅1078297530
2014年01月01日 07点01分 19
level 1
我是新手,受教了。[真棒]
2014年01月03日 03点01分 20
level 5
哎,大道理讲多了,楼主o(≥ o ≤)oo(≥ o ≤)oo(≥ o ≤)oo(≥ o ≤)oo(≥ o ≤)o
2014年01月04日 07点01分 21
我回一句,本文立足点为想学或者说想入门的新手。你认为跟迷茫的新手应该讲些什么?难道重新说一遍Delphi编程?
2014年01月04日 14点01分
回复 OOPhappy :你怎么知道人家迷茫
2014年01月04日 23点01分
level 5
[喷][喷][喷][喷][喷][吐][吐][吐][寻死][寻死]
2014年01月04日 07点01分 22
1 2 尾页