XE8 msbuild error F2613: Unit 'SysUtils' not found!
把舊有專案更新成到 XE8後,當然是使用Msbuild來做全目錄的打包!
但一直出錯 "error F2613: Unit 'XXXX' not found!"
後來發現他的dproj格式有改過,只要使用XE8開啟專案後.不做任何情再做儲存即可排除
記錄有關於學習的任何心得,目前主要以Microsoft Visual Studio、Sql Server、C#、電腦資訊、軟體應用、程式設計為主!
把舊有專案更新成到 XE8後,當然是使用Msbuild來做全目錄的打包!
但一直出錯 "error F2613: Unit 'XXXX' not found!"
後來發現他的dproj格式有改過,只要使用XE8開啟專案後.不做任何情再做儲存即可排除
作者: huwk 時間: 5:17 下午
大半是STEP BY STEP的VIDEO,看完後相信會功力大增!
包含
包含的產品有
以上原始網頁資訊在
作者: huwk 時間: 11:03 下午
使用XE2開啟舊的程式(Delphi 2009)建立的專案,開啟時非常的順利,連提示轉換都沒有就直接開啟(不過儲存後他會很自動的變更DPROJ裡頭的編譯資訊)!
心想這麼聰明,一定編譯起來是非常的順利,不過在實際編譯後卻發生找不到"單元"的問題,例如程式中原來使用USE Jpeg卻提示找不到,查看後才發覺需變更為vcl.imaging.Jpeg
在XE2中也導入了像.NET中的SCOPE做法,詳細可以參考這二個連結
所以只要程式升級XE2後發生單元不存在的情況,都可以先來這裡查閱應加入什麼SCOPE NAME! 不過並不明白為什麼開啟時不自動轉換
以下列出常見的單元異動後的名稱
vcl.Graphics
vcl.Controls
vcl.Forms
vcl.Dialogs
vcl.Buttons
vcl.ExtCtrls
vcl.StdCtrls
vcl.Controls
vcl.ComCtrls
vcl.Grids
vcl.imaging.Jpeg
vcl.imaging.pngimage
vcl.imaging.GIFImg
System.SysUtils
System.Classes
作者: huwk 時間: 11:51 下午
CMD : w32tm /resync
CODE: ShellExecuteW(Handle,'OPEN',pchar('w32tm'),PChar('/resync'),'',SW_HIDE);
作者: huwk 時間: 12:56 下午
在Delphi的環境中.因為沒有全面的gc系統,所以讓系統不穩定的一個潛在原因為”物件建立後未被釋放”! 程式可能一開始都很正常,但經過反覆操作,久了後常因為記憶體(heap)爆了,而發生錯誤,此種未被正常釋放的物件行為可以稱為 MemoryLeaks
要排除這樣子的狀況,首先要有良好的寫作習慣,使用try finally 來釋放物件,例如
with TStringlist.create do
try
finally
free;
end
但在一個複雜的系統中,若要找出像這樣子的潛在問題,不可能拿出所有的code一行一行程式去review‧此時就需要用程式或工具的協助
使用delphi內建的debug功能,是個簡單又實惠的做法,只需要將 MemoryLeaksOnShutdown 變數設成true即可(在system)
procedure TForm1.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
with TStringList.Create do
begin
AddObject('1',TLabel.Create(nil));
AddObject('2',TLabel.Create(nil));
AddObject('3',TLabel.Create(nil));
end;
with TButton.Create(nil) do
begin
Parent := Self;
Visible := True;
end;
end;
當button1被click過後.結束程式時即會彈出如下的訊息
作者: huwk 時間: 11:37 下午
官網提供下載 Embarcadero RAD Studio 2010 Architect - 30 day trial 註冊後即會收到官網寄出的試用key,讓你全功能試用,也省去花時間找keygen
版本異動說明 Embarcadero RAD Studio 2010 What’s New
影片功能介紹 http://etnaweb04.embarcadero.com/rad-studio-2010/
Delphi 2010 產品發表會 -Windows 7 浪潮來襲,
觸控應用軟體商機 一「觸」即發 !領先全球業界首先支援 Windows 7 開發的原生Win32開發工具
作者: huwk 時間: 1:03 下午
今天看到CODEGEAR同時釋出了UPDATE3跟UPDATE4(DB),看了一下FIXED的清單應是有包含CDS.LOCATE無法正確找到中文資料的問題!
但試了一下真的是很失望..因為問題依然存在! 照這樣子的速度不知道何時才能購買且升級到2009!
作者: huwk 時間: 1:31 下午
I have fixed "Clientdataset can't locate TWideStringField" problem!
I find then problem at TExprParser! You solve the problem Step by Step .
function TBearClientDataSet.Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean;
begin
DoBeforeScroll;
Result := LocateRecord2(KeyFields, KeyValues, Options, True);
if Result then
begin
Resync([rmExact, rmCenter]);
DoAfterScroll;
end;
end;
Some Code..
function TFilterExpr2.PutConstant(Node: PExprNode): Integer;
begin
Result := 0;
case Node^.FDataType of
ftString, ftFixedChar, ftGuid: Result := PutConstAnsiStr(AnsiString(Node^.FData));
ftWideString, ftFixedWideChar: Result := PutConstUnicodeStr(UnicodeString(Node^.FData));
..
end.
function TFilterExpr2.PutConstAnsiStr(const Value: AnsiString): Integer;
var
Str: AnsiString;
Buffer: array[0..255] of Byte;
begin
if Length(Value) >= SizeOf(Buffer) then Str := Copy(Value, 1, SizeOf(Buffer) - 1)
else Str := Value;
FDataSet.Translate(PAnsiChar(Str), PAnsiChar(@Buffer), True);
Result := PutConstNode(ftString, @Buffer, Length(Str) + 1);
end;
function TFilterExpr2.PutConstUnicodeStr(const Value: UnicodeString): Integer;
var buffer: array of word; Len : Integer;
begin
Len := Length(Value);
SetLength(buffer, Len + 1);
buffer[0] := Len * 2;
if Value <> '' then Move(Value[1], Buffer[1], Len*2);
Result := PutConstNode(TFieldType(ftUnknown), @buffer[0], (Len+1)*2);
SetNodeOp(Result, 0, $1007);
end;
作者: huwk 時間: 10:54 下午
記錄最近遇到的二件事情
1.某段程式在xp上運行都正常.但在vista上使用到一半時會突然發生"資料庫"登入發生錯誤
2.程式中取出資料均只有1筆(改變DATASET的MaxRecord為0也沒作用)
發生的經過為
事件1.
追查後發現程式中有一段程式會將connection物件中斷再重連,而重連時並沒有再改變connectionstring的內容!在檢查原有的connectionstring時發現並沒有加上Persist Security Info的設定值,導致在vista環境下password在connect中斷後,會自動從連接字串中去除,將Persist Security Info設成ture再加入connectionstring即排除。
ado的環境下,當沒有指定此值預設應都為true,也就是本來應就會保留一些有關安全性的資訊!但不知道為什麼vista上的行為跟xp不同,也由此可證vista真的比較安全! 安全到搞死人啦!!
可以參考微軟msdn中ado.net中相關的說明
事件2.
程式莫名奇妙查詢後的資料均只有一筆,追查後原來是MaxRecord在執行過像 select top 1後,此值會被寫入1,導致後續的查詢只有一筆,試著在改變commandtext時也順便吧maxrecord設成0,那是否能改善上述的問題呢? 答案是否定的@@(在debug環境修改此值結果也是一樣),最後的解法為(dataset):CLOSE; MaxRecord = 0; Connection = nil; Connection = 原有的連結; 即排除問題!
作者: huwk 時間: 10:51 下午
在初接觸到程式設計時,那時對於Delphi 5的Midas架構覺得很驚奇,3-Tier、離線模式、Load Balance等功能,都讓我在中歷資策會學習期間,每一天,每一晚都過得很充實!當時的生活真的是累了就睡,起床就學,寫到這就想起好多美好時光,也要感謝很多老師,尤其是教Delphi的DoDo(miss 黃)、連sir,還有一位用課外自己時間教java的王Sir!
在出了社會接觸的幾個產品,多多少少都會用到CDS,尤其是拿來當一些資料的暫存特別好用,可以用資料庫的方式進行一些必要的操作。但一直以來都覺得它的速度實在不快,以往嚐試著用fastmm或是試著自行pack data等方式來改善,但成效總是有限!
在經歷近二年.NET的洗禮,最近又重新接觸MIDAS後,終於有了新的結果!首先以本機進行測試,從PROVIDER餵資料給CDS,這段時間花了9成五以上的時間,有了這樣子的體認,即可以有個初步的方向,即丟掉笨重的data結構。在重新檢視了專案中CDS的用法,發覺有大半的程式只是用來捉取資料(查詢,觀看)取回來的資料並不需要進行編修後再更新,也就是不用保有原cds的資料結構,只要想辦法手動"序列化(serialization)"這段不需要編修的Data資料,讓他到CLINET時可以正確還原到能夠檢視即可!經由這樣子的調整與改變,在有較大量資料的查詢下,速度至少快了將近一半!
寫到好像問題都解決了,沒有什麼受不了的!但試用了d2009後,又發覺cds二個問題
作者: huwk 時間: 11:11 下午
此方法是通用的.不論在C#或DELPHI均可以!!
只需要在原設定的連線字串上加上如下的設定值即可
Jet OLEDB:Database Password=密碼
作者: huwk 時間: 8:27 下午
可以一次編譯目錄中(含次目錄)所有的專案檔
BAT檔放在 熊的留言版 檔案名稱為 BUILD.7Z (要申請加入)
Auto compile all the project files (including sub-directories)
Bat(dos mode script) file on the 熊的留言版 the name of the file BUILD.7Z
作者: huwk 時間: 2:38 下午
I have problem compiling a project from command line using msbuild.
how can i solve it??
D:\Test>msbuild Test.dproj
Microsoft (R) Build Engine Version 2.0.50727.3053
[Microsoft .NET Framework, Version 2.0.50727.3082]
Copyright (C) Microsoft Corporation 2005. All rights reserved.
已經開始建置於 2009/2/9 上午 10:00:00。
__________________________________________________
專案 "D:\Test\Test.dproj" (預設目標):
D:\Test\Test.dproj : error MSB4040: 專案中沒有目標。 ( There is no target in
the project.)
專案 "Test.dproj" 建置完成 -- 失敗。 (fail)
建置失敗。
D:\Test\Test.dproj : error MSB4040: 專案中沒有目標。
0 個警告
1 個錯誤 (one error)
經過時間 00:00:00
I found the problem!
Set BDS=c:\program files\codegear\rad studio\6.0 before call msbuild!
作者: huwk 時間: 2:45 下午