![]() |
圖1:汽車多媒體全球?qū)Ш絻x從“指路”裝置轉(zhuǎn)變成了向駕駛員提供“貼心服務(wù)”和“愉悅心情”的“HMI中心”。(點(diǎn)擊放大) |
![]() |
圖2:車載導(dǎo)航儀的多媒體化在兼顧“貼心服務(wù)”和“愉悅心情”的同時(shí)增加功能。EMC成為重要課題。 |
在這里,讓我們來回顧一下車載導(dǎo)航儀的發(fā)展歷史。1987年作為電子地圖顯示裝置問世的車載導(dǎo)航儀,首先于1990年實(shí)現(xiàn)了搜索前往目的地路徑和指路的功能,然后,到1995年左右,指路實(shí)現(xiàn)了語音化。接著,進(jìn)入2000年以后,與各種網(wǎng)絡(luò)服務(wù)聯(lián)動(dòng)的多媒體化得到了發(fā)展。
為了實(shí)現(xiàn)上述進(jìn)步,車載導(dǎo)航儀的性能得到了穩(wěn)步提高。以路徑搜索時(shí)間為例,2007年與1990年相比,時(shí)間縮短到了1/10以下。位置誤差(精度)實(shí)現(xiàn)了1/6以下的高精度化(圖3)。
![]() |
圖3:性能的變化圖在從導(dǎo)航儀向語音導(dǎo)航儀、多媒體型導(dǎo)航儀轉(zhuǎn)變的過程中實(shí)現(xiàn)了大幅度的高速化·高精度化。 |
![]() |
圖4:車載導(dǎo)航儀用CPU/DRAM的高速化趨勢(shì)輻射能的預(yù)測(cè)趨于重要。 |
![]() |
圖5:車載導(dǎo)航儀的CPU/內(nèi)存總線輻射能 |
![]() |
圖6:EMC的分類樹在設(shè)計(jì)階段研究EMC時(shí)需要特別注意電場(chǎng)輻射噪聲。(點(diǎn)擊圖片放大) |
![]() |
圖7:EMC的3級(jí)分類 |
生活中不少次遇到了一些人老是拿Delphi 來 取笑 VB.
可我對(duì)這么語言之間不是很懂,也就沒說什么,心底下只認(rèn)為語言只適合自己.只要做出來的程序能平易近人,那么就是Good.
所以這個(gè)問題在心里也就成了一個(gè)疑問了??
到底Delphi是如何神圣.?
到底Delphi有何資格來取笑VB.?
到底Delphi真的那么好嗎.?
PS:以上術(shù)個(gè)人疑問.請(qǐng)大家都來談下
一般程序員都會(huì)幾種語言,自然就有比較,效率方面delphi的確比VB出色,不要?jiǎng)硬粍?dòng)就上類型庫
VB和DELPHI比,一個(gè)就相當(dāng)于磚頭,一個(gè)相當(dāng)組合好的磚頭
你說比什么???
VB是熟悉API及參數(shù)比較好的東西…但是太麻煩了,不過如果你從VB跳到DELPHI調(diào)用API會(huì)很爽,而且VB還需要運(yùn)行庫,打包的時(shí)候一大堆…可能代碼才那么一點(diǎn)
DELPHI封裝的比較好…直接調(diào)用API…免得你去聲明常數(shù)什么的…而且打包的話比較小…
有什么可比的嗎… 無非是速度… 你用VB很麻煩才能解決的事情DELPHI用的代碼更少… 運(yùn)行更快..就這么簡(jiǎn)單…
你自己有自己的函數(shù)庫什么的你覺得VB更方便當(dāng)然VB也可以了… 又沒人笑你…
兩個(gè)差不多,做一些示范性的東西用VB好,正式做的話,可能delphi好一些。
但是這兩個(gè)都是明日黃花了。
一般來說只有思想上的菜鳥才會(huì)用一種開發(fā)工具去笑另一種開發(fā)工具
達(dá)到一定的思維層次后就開始停止這種無聊的行為,而根據(jù)工程的情況及自己掌握的熟練程度采用不同的開發(fā)工具了
要知道,有時(shí)間去討論這些的人一般來說都是思想不成熟的人
]]>ADOConnection和ADOTable在delphi中像許多書中教的那樣設(shè)置好連接上數(shù)據(jù)庫(我用的SQLServer),運(yùn)行沒有問題。然后我修改,目的是可以修改連接數(shù)據(jù)庫而不用在delphi中修改ADOConnection的ConnectionString屬性,還不出現(xiàn)連接對(duì)話框。
修改步驟:將LoginPrompt設(shè)置為false,將ConnectionString屬性清空,添加連接代碼
conStr:='Provider=SQLOLEDB.1;Password=1982072019;User ID=sa;Initial Catalog=StorageManagement;Data Source=10.16.99.175';
try
loginForm.tempADOConnection.ConnectionString :=conStr;
loginForm.tempADOConnection.Connected := true;
except
messagedlg('數(shù)據(jù)庫連接有誤!!請(qǐng)檢查DataConfig.XML',mtConfirmation,[mbOk],0);
Application.Terminate;
end;
這樣程序運(yùn)行起來,連接數(shù)據(jù)庫是沒有問題的。但出現(xiàn)的問題是在dlephi中ADOTable控件是不能連接表的,因?yàn)镃onnectionString屬性沒有值。報(bào)錯(cuò)為“無效的授權(quán)說明”。如何既能在delphi中使用ADOConnection和ADOTable控件,又可以不出現(xiàn)那個(gè)討厭的連接對(duì)話框。
2,在delphi中使用sql語句。
因?yàn)閟ql語句中給字符串賦值需要用雙引號(hào),而delphi中用單引號(hào)括起字符串,我使用遇到了一些問題。我試驗(yàn)的結(jié)果是delphi中用兩個(gè)單引號(hào)代替sql語句中的雙引號(hào)。不知道對(duì)不對(duì)?
具體如何使用,我還是不太清楚。
3,在delphi 7.0中使用ADOQuery的返回結(jié)果,書中介紹使用Params['xxxx'].AsString;
我使用后報(bào)錯(cuò),但有一個(gè)光盤的程序這樣使用沒有報(bào)錯(cuò)。我使用的是Parameters['xxxx'],也使用不了.AsString
4,原代碼:
====================================================================
if canInsert then
begin
with allDataModule.AQ_OtherMaterielOut do
begin
Close;
SQL.Clear;
SQL.Text:='insert otherMaterielOut(materielID,amount) values (:insertID,:insertAmount,)';
Parameters[0].Value:=myMateriel;
Parameters[1].Value:=myAmount;
ExecSQL;
end;
with allDataModule.AQ_OtherMaterielStock do
begin
Close;
SQL.Clear;
SQL.Text:='update otherMaterielStock set amount=amount-:updateAmount where materielID=:updateID';
Parameters[0].Value:=myAmount;
Parameters[1].Value:=myMateriel;
ExecSQL;
end;
materielOutForm.Close;
end;
在這段代碼之后
with allDataModule.AQ_OtherMaterielOut do
begin
Close;
SQL.Clear;
SQL.Text:='update otherMaterielStock set amount=amount-:updateAmount where materielID=:updateID';
Parameters[0].Value:=myAmount;
Parameters[1].Value:=myMateriel;
ExecSQL;
end;
不能使用allDataModule自動(dòng)顯示可以使用的控件列表功能,但我強(qiáng)加上后面的代碼仍然可以使用。怎么回事?
//============================================================================= IT我最牛-程序員的技術(shù)討論與分享園地2y|CDr0GV
// Procedure: GetTempPathFileName IT我最牛-程序員的技術(shù)討論與分享園地 OPB |XCAQ
// Author : ysai
lV#H0|GW0// Date : 2003-01-27
Wii3m xq7Z~PW0// Arguments: (None) IT我最牛-程序員的技術(shù)討論與分享園地I @\?r.j'pt
// Result : string IT我最牛-程序員的技術(shù)討論與分享園地&~kr(}\i2MUh
//=============================================================================
f ? \8o:[7_C0function GetTempPathFileName():string;
:Bnr%[2m9v0//取得臨時(shí)文件名 IT我最牛-程序員的技術(shù)討論與分享園地nU4w~S3f"\9G
var
6?[vh|&_%S0SPath,Sfile&:array [0..254] of char;
DEmTKw`(H;KS0begin
%])xJ,V%N+eYN7M:P0GetTempPath(254,SPath);
^"^/L?!T&YAm:V#t!mP0GetTempFileName(SPath,'~SM',0,SFile); IT我最牛-程序員的技術(shù)討論與分享園地!P\ b/AI"p D
result:=SFile;
:h/G"fY7z6k0DeleteFile(PChar(result));
G(WzO a1i [^z)b0end; www.iTbulo.com0sJZ0
G(WzO a1i [^z)b0end; www.iTbulo.com0sJZ0.n,M.yP B8U3g6~2f0
@+Y6Y |#^opfc\^N.b:f0//=============================================================================
,g7b,O%^C0// Procedure: CreateAccessFile
)Y2y RWO.c0// Author : ysai IT我最牛-程序員的技術(shù)討論與分享園地1ZRS6H;R!O
// Date : 2003-01-27
1lLR7?5Fdfm#E]0// Arguments: FileName:String;Password:string='' IT我最牛-程序員的技術(shù)討論與分享園地#l5V0y6d1]y[_PI
// Result : boolean IT我最牛-程序員的技術(shù)討論與分享園地%qW/e1Rg3b
//=============================================================================
m8CU3E8xa(_0pj0function CreateAccessFile(FileName:String;Password:string=''):boolean;
-b,mD4x9T MTa/R0//建立Access文件,如果文件存在則失敗
.\b)?!MIO0var
yy/ET x0STempFileName:string;
rPd:k@$l:g'k[1f'D0vCatalog:OleVariant; IT我最牛-程序員的技術(shù)討論與分享園地w _N#^RJ)u-f k
begin
LtD3y@"{ j&`*T q0STempFileName:=GetTempPathFileName;
X&P7vn%Yb%e J&t0try
pk`7O#txMPQ&C0vCatalog:=CreateOleObject('ADOX.Catalog'); IT我最牛-程序員的技術(shù)討論與分享園地)[)V$jo3m5Qa xL
vCatalog.Create(format(SConnectionString,[STempFileName,Password])); IT我最牛-程序員的技術(shù)討論與分享園地 O8A IXYZ.}$l0A~3v6b
result:=CopyFile(PChar(STempFileName),PChar(FileName),True); IT我最牛-程序員的技術(shù)討論與分享園地8D i V&B%H-wb{}3G@
DeleteFile(STempFileName); IT我最牛-程序員的技術(shù)討論與分享園地E8z%QM)x8O7O
except IT我最牛-程序員的技術(shù)討論與分享園地X"I^Kprjy E\
result:=false;
1F^W _ez0end;
S&N!]L+t^0end; www.iTbulo.com0sJZ0IT我最牛-程序員的技術(shù)討論與分享園地|qq z*a7pTkv h
0cP3^6HE9ct;Vg$S0//============================================================================= IT我最牛-程序員的技術(shù)討論與分享園地6Ed+]0pui
// Procedure: CompactDatabase IT我最牛-程序員的技術(shù)討論與分享園地/J SK3q;Hh
// Author : ysai IT我最牛-程序員的技術(shù)討論與分享園地7e$y BT6d:QA b5d
// Date : 2003-01-27
[ov7A+P0ss0// Arguments: AFileName,APassword:string
P1W'Xi|0// Result : boolean IT我最牛-程序員的技術(shù)討論與分享園地'J,~5M!}g\'D PQ
//=============================================================================
s#r4[ u+J1b~0@!e0function CompactDatabase(AFileName,APassword:string):boolean;
~1VsUD0//壓縮與修復(fù)數(shù)據(jù)庫,覆蓋源文件
uN5e ?X0var IT我最牛-程序員的技術(shù)討論與分享園地l9GF(\ ?:}AYf]
STempFileName:string; IT我最牛-程序員的技術(shù)討論與分享園地'U:y@ v/m"V,R m@
vJE:OleVariant; IT我最牛-程序員的技術(shù)討論與分享園地_Af6qQ0C
begin
7] \I/g)Z|[0STempFileName:=GetTempPathFileName; IT我最牛-程序員的技術(shù)討論與分享園地*m^)kf3O^
try
vB%T4p2Ak?a0vJE:=CreateOleObject('JRO.JetEngine');
Nt)v%J(E e*~ qT8q/?*]0vJE.CompactDatabase(format(SConnectionString,[AFileName,APassword]), IT我最牛-程序員的技術(shù)討論與分享園地 h"xf AUx
format(SConnectionString,[STempFileName,APassword])); IT我最牛-程序員的技術(shù)討論與分享園地 |Vi)V ^-t7RC)|
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
3[6j1T,gI0DeleteFile(STempFileName);
W0Jt9\h$a9V.z ID:^.{0except IT我最牛-程序員的技術(shù)討論與分享園地 LS+j+mFn~9Ca/b m
result:=false; IT我最牛-程序員的技術(shù)討論與分享園地!l\6iD(lv7}
end; IT我最牛-程序員的技術(shù)討論與分享園地"nRv"P m*KZ
end; www.iTbulo.com0sJZ0
o9mk*C.f*V5^(W1_/h0
\G(q|#w0u.Xu0 //=============================================================================
ycSQ yE0// Procedure: ChangeDatabasePassword IT我最牛-程序員的技術(shù)討論與分享園地C ^f` l&G9|4|
// Author : ysai
,d6t+M.g3J7k^0// Date : 2003-01-27
1DG]JF II0// Arguments: AFileName,AOldPassword,ANewPassWord:string
$ni%]h9O8o@!mu{0// Result : boolean
PJ9p6k:M0//============================================================================= IT我最牛-程序員的技術(shù)討論與分享園地P6Lz9i[cF/R3H7W
function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
;`yy U(a'DJ0//修改Access數(shù)據(jù)庫密碼
r]F(ay4l+k0var IT我最牛-程序員的技術(shù)討論與分享園地}%l#}.M)SA*A*v
STempFileName:string; IT我最牛-程序員的技術(shù)討論與分享園地Y^ |-S"ia
vJE:OleVariant; IT我最牛-程序員的技術(shù)討論與分享園地u&n? I,hb
begin
k7W(XYi9R0^Q_1s2@0STempFileName:=GetTempPathFileName;
3Mkm%e{7C`-A w&\0try
5zhs,|m3Z [V9N0v2Q0vJE:=CreateOleObject('JRO.JetEngine');
m&R+]/G/jf:z0gD0vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassword]), IT我最牛-程序員的技術(shù)討論與分享園地zN C/MUIDx!G
format(SConnectionString,[STempFileName,ANewPassword]));
w6R"Q&dE%q[f@Y0result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
-v H$@ T!Z;v0DeleteFile(STempFileName); IT我最牛-程序員的技術(shù)討論與分享園地![W y,Gpq
except
i$x%AU2u_w mC0result:=false; IT我最牛-程序員的技術(shù)討論與分享園地C5PXr6bJIB]
end;
!p(A,l6]z^ej1t0end; www.iTbulo.com0sJZ0IT我最牛-程序員的技術(shù)討論與分享園地bi{1dt3@q
IT我最牛-程序員的技術(shù)討論與分享園地!F j3a,D,mz3I8J/d9I3J$S
2.Access中使用SQL語句應(yīng)注意的地方及幾點(diǎn)技巧 IT我最牛-程序員的技術(shù)討論與分享園地`!Bd F8k.Ow0_;e
以下SQL語句在Access XP的查詢中測(cè)試通過 IT我最牛-程序員的技術(shù)討論與分享園地XR6p#X Dw:Y!pvYr n
建表:
?UCXzP7?R0Create Table Tab1 ( IT我最牛-程序員的技術(shù)討論與分享園地sv6j3UQ#\0V
ID Counter, IT我最牛-程序員的技術(shù)討論與分享園地1c#@w)qxsj
Name string,
^wbV+WN^3a#P1l e0Age integer, IT我最牛-程序員的技術(shù)討論與分享園地m Vsqqoq
[Date] DateTime); IT我最牛-程序員的技術(shù)討論與分享園地7z4}1DaIp4^
技巧: IT我最牛-程序員的技術(shù)討論與分享園地lPQZJ9Zfv8@T
自增字段用 Counter 聲明.
M"YQ3zG,ccO O^0字段名為關(guān)鍵字的字段用方括號(hào)[]括起來,數(shù)字作為字段名也可行. www.iTbulo.com0sJZ0
Y{*OV` N0 IT我最牛-程序員的技術(shù)討論與分享園地1d6d+y6_*dr"l G
建立索引:
z'w/YZT3lG D4Z0下面的語句在Tab1的Date列上建立可重復(fù)索引
W6M"X&d"m&}h0Create Index iDate ON Tab1 ([Date]); IT我最牛-程序員的技術(shù)討論與分享園地E6r-r,A#^ u:{
完成后Access中字段Date索引屬性顯示為 - 有(有重復(fù)).
Ll)@y(d0下面的語句在Tab1的Name列上建立不可重復(fù)索引 IT我最牛-程序員的技術(shù)討論與分享園地1NK!t:b7g^t
Create Unique Index iName ON Tab1 (Name); IT我最牛-程序員的技術(shù)討論與分享園地z^0{7Ft4|ZqbPV
完成后Access中字段Name索引屬性顯示為 - 有(無重復(fù)).
!R@0UDo` Q}o e0下面的語句刪除剛才建立的兩個(gè)索引 IT我最牛-程序員的技術(shù)討論與分享園地5d!Sg [r
Drop Index iDate ON Tab1;
W QuVU,_[wQ0Drop Index iName ON Tab1; www.iTbulo.com0sJZ0
%{T'Htk-p9p(?.[0 IT我最牛-程序員的技術(shù)討論與分享園地)pK%{!v` |/QU$n
Access與SQLSERVER中的UPDATE語句對(duì)比: IT我最牛-程序員的技術(shù)討論與分享園地 oX `ZO'vt
SQLSERVER中更新多表的UPDATE語句:
W(X?/N @_(Do$@I0UPDATE Tab1 IT我最牛-程序員的技術(shù)討論與分享園地#VU"k9p\z$z
SET a.Name = b.Name
$X3jL1]8F H K0FROM Tab1 a,Tab2 b IT我最牛-程序員的技術(shù)討論與分享園地-roheo"rh#M};c
WHERE a.ID = b.ID;
d ?h9HEK0同樣功能的SQL語句在Access中應(yīng)該是
$i.f9A*yz'e0 UPDATE Tab1 a,Tab2 b IT我最牛-程序員的技術(shù)討論與分享園地 \V d/~)z1X^'v
SET a.Name = b.Name
An{S-t#F9p |S3xL0WHERE a.ID = b.ID; IT我最牛-程序員的技術(shù)討論與分享園地k"g |,z9V)TCx p j(}
即:Access中的UPDATE語句沒有FROM子句,所有引用的表都列在UPDATE關(guān)鍵字后. IT我最牛-程序員的技術(shù)討論與分享園地n7G:hxQ9sv1N
上例中如果Tab2可以不是一個(gè)表,而是一個(gè)查詢,例:
,Gzs9cE V4?1[ f0UPDATE Tab1 a,(Select ID,Name From Tab2) b
D3\Jg3G[C0SET a.Name = b.Name IT我最牛-程序員的技術(shù)討論與分享園地;|;Li"rg)T d`
WHERE a.ID = b.ID;
a%m(r4Y#`0o&CK0www.iTbulo.com0sJZ0IT我最牛-程序員的技術(shù)討論與分享園地 }2|2J \I
IT我最牛-程序員的技術(shù)討論與分享園地'c1A9h bq2P!a$O
訪問多個(gè)不同的Access數(shù)據(jù)庫-在SQL中使用In子句: IT我最牛-程序員的技術(shù)討論與分享園地7it3Oq5g \X D
Select a.*,b.* From Tab1 a,Tab2 b In 'DB2.mdb' Where a.ID=b.ID;
)]tZ E!G)bYW;L%e C-c0上面的SQL語句查詢出當(dāng)前數(shù)據(jù)庫中Tab1和DB2.mdb(當(dāng)前文件夾中)中Tab2以ID為關(guān)聯(lián)的所有記錄. IT我最牛-程序員的技術(shù)討論與分享園地;]4CHA?V
缺點(diǎn)-外部數(shù)據(jù)庫不能帶密碼. IT我最牛-程序員的技術(shù)討論與分享園地K7m!YE['gQ^ YC,N
補(bǔ)充:看到ugvanxk在一貼中的答復(fù),可以用 IT我最牛-程序員的技術(shù)討論與分享園地Y#_p?QY
Select * from [c:\aa\a.mdb;pwd=1111].table1; IT我最牛-程序員的技術(shù)討論與分享園地 i1t x8F xj5K7kOc
請(qǐng)將QQWry.dat和binghe.exe放在同一目錄下!
一、配置服務(wù)端
首先配置服務(wù)端,只要在菜單“配置”里選擇“配置服務(wù)端”選項(xiàng),然后填寫你的上線名稱(只支持英文或數(shù)字)和自動(dòng)上線讀IP的“自動(dòng)上線地址”,按生成即可以同目錄下生成Server.exe程序。
然后將這個(gè)生成的程序發(fā)給別人(當(dāng)然你要自己運(yùn)行也行,只是控制的就是自己了),下邊就等著服務(wù)端上線吧。
二、自動(dòng)上線設(shè)置
這個(gè)其他同類的程序說得很多了,我也不想多少,不懂的朋友可以下其他程序的動(dòng)畫演示來看,呵呵(愉懶了~~)。
程序里我都寫了例子,大家照著換成自己的就行了。
這里只說一點(diǎn),這是FTP更新里的“存放IP的文件”中的“www”是你的FTP空間放網(wǎng)頁的目錄,有些FTP空間直接在根目錄里存放網(wǎng)頁,這樣你直接在這行填上“ip.htm”就行了,不過一般的FTP空間都在一個(gè)專門的目錄來存放網(wǎng)頁,你自己登錄FTP看一個(gè),換成自己的相應(yīng)目錄就行了!
三、控制功能
文件管理:可以瀏覽、上傳、下載、刪除、遠(yuǎn)程遠(yuǎn)行等(不見意上傳下載大文件)。
抓屏:手動(dòng)抓屏。由于網(wǎng)速等原因,在互聯(lián)網(wǎng)有可能會(huì)很慢,在局域網(wǎng)就沒什么。
視頻臨控:可以自己探測(cè)攝像頭,服務(wù)端主機(jī)安裝有攝像頭的話,圖標(biāo)會(huì)自動(dòng)變成攝像頭圖標(biāo)。
進(jìn)程管理:在彈出的進(jìn)程管理窗口點(diǎn)擊右鍵即可看見相應(yīng)的操作。
窗口管理:同上。
鍵盤記錄:同上。
遠(yuǎn)程卸載。
這只是一個(gè)演示程序,目前只實(shí)現(xiàn)上邊的這些功能。