散分!请教delphi6开发的程序在delphi2006上还可以用吗 - Delphi当前位置:& &&&散分!请教delphi6开发的程序在delphi2006上还可以散分!请教delphi6开发的程序在delphi2006上还可以用吗&&网友分享于:&&浏览:1次散分!请问delphi6开发的程序在delphi2006下还可以用吗?请问delphi6开发的程序在delphi2006下还可以用吗?------最佳解决方案--------------------lz自问自答,哈哈。
可以!------其他解决方案--------------------可以在&&&Delphi2006.Win32&&&下使用。&&
&&至于在&&&Delphi2006.Net&&&嘛,需要改很多地方。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有2002年5月 Delphi大版内专家分月排行榜第一2002年1月 Delphi大版内专家分月排行榜第一
2007年11月 .NET技术大版内专家分月排行榜第二2007年1月 Delphi大版内专家分月排行榜第二2006年12月 Delphi大版内专家分月排行榜第二2006年10月 Delphi大版内专家分月排行榜第二2002年8月 Delphi大版内专家分月排行榜第二2002年6月 Delphi大版内专家分月排行榜第二2001年12月 Delphi大版内专家分月排行榜第二
2002年5月 Delphi大版内专家分月排行榜第一2002年1月 Delphi大版内专家分月排行榜第一
2007年11月 .NET技术大版内专家分月排行榜第二2007年1月 Delphi大版内专家分月排行榜第二2006年12月 Delphi大版内专家分月排行榜第二2006年10月 Delphi大版内专家分月排行榜第二2002年8月 Delphi大版内专家分月排行榜第二2002年6月 Delphi大版内专家分月排行榜第二2001年12月 Delphi大版内专家分月排行榜第二
2006年8月 PHP大版内专家分月排行榜第三2006年7月 PHP大版内专家分月排行榜第三2006年5月 PHP大版内专家分月排行榜第三2005年11月 PHP大版内专家分月排行榜第三2005年10月 PHP大版内专家分月排行榜第三
2006年8月 PHP大版内专家分月排行榜第三2006年7月 PHP大版内专家分月排行榜第三2006年5月 PHP大版内专家分月排行榜第三2005年11月 PHP大版内专家分月排行榜第三2005年10月 PHP大版内专家分月排行榜第三
2002年5月 Delphi大版内专家分月排行榜第一2002年1月 Delphi大版内专家分月排行榜第一
2007年11月 .NET技术大版内专家分月排行榜第二2007年1月 Delphi大版内专家分月排行榜第二2006年12月 Delphi大版内专家分月排行榜第二2006年10月 Delphi大版内专家分月排行榜第二2002年8月 Delphi大版内专家分月排行榜第二2002年6月 Delphi大版内专家分月排行榜第二2001年12月 Delphi大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。真是膜拜Delphi C++ Builder编译器的作者们,要下多少苦功夫才能解决如此之多的问题,制造出一个神级作品给世人享用。另外以我的编程经验所能想到很麻烦但却是必须的还有两个地方,一个是Format函数,另一个是类型转换。有空看看FreePascal的源码可以略窥一二。其实我也是一个疯狂的政经爱好者,本来也不是很吊美国,觉得我们迟早各方面,包括最先进的科学技术,都能赶上的他们的。但是想想这些神级的工程师,包括Borland早期的和现在的Embarcadero,心里多少有些发怵。美国,虽然也有Facebook创始人这样不劳而获的人(至少真的不值这么多钱),但是更多的还是为了金钱而疯狂工作的工程师国家,这一点任正非的讲话里也提到过。虽然现在也还是走下坡路了,但是底子仍在。
PwideChar()强制转化的话会重新分配内存,这个内存是局部的,函数已结束内存就释放了。GetMem 和 StringToWideChar结合使用,函数结束也不会释放内存,但是这样需要在程序运行完毕手动释放内存了。
str1: String[6]; {指定大小不能超过 255} {多给了会被截断}
如果你的字符串长度不超过 255,完全可以用 ShortString,用法同 String,并且可以用在 Dll 中:var
a: ShortSbegin
SetLength(a, 64);
Delete(a, 1, 5);
DLL里面是可以用String,只要传递的参数不是String就不用担心。参数可以用PChar,函数内部再转换
shorstring不是以null结尾的。统计字符串长度时不包括 Null 结束字节.
用FastMM吧,不用DLL也可以实现DLL和EXE传递字符串了,下载网址http://fastmm.sourceforge.net/Dephi 2006里的内存管理器已经是 FastMM 了开始我也觉得迷惑,后来打开 GetMem.inc 一看就什么都明白了:)(里面的代码就是FastMM,作者就是:Pierre le Riche)至于怎么用可以看Delphi自带例子:Demos\DelphiWin32\VCLWin32\MemMgr\SimpleShareMem在主程序和DLL的项目引用第一行加上:
SimpleShareMem, 就可以了
{在没有给 str 赋值以前, 既然声明了, 就有了指针地址(@str):}
ShowMessage(IntToStr(Integer(@str))); {1244652; 这是在栈中的 str 的指针地址}
{但现在还没有分配真正储存字符串内存}
ShowMessage(IntToStr(Integer(str)));
{0; 0 就是 null}
{通过实际地址获取字符串, 其中的 pc 是前面定义的字符指针}
pc := PChar(Integer(str));
ShowMessage(pc);
A := 'Delphi';//此时A的引用计数是-1,原因是'字符串'存储在静态数据区, 编译的时候地址就定了,属于常量~也就是说,它是不能动态地释放的;
{向左偏移 4 个字节就是字符串长度的位置, 读出它来(肯定是5):}
pint := PInteger(Integer(str) - 4);
ShowMessage(IntToStr(pint^));
{向左偏移 8 个字节就是字符串的引用计数, 读出它来(肯定是3):}
pint := PInteger(Integer(str) - 8);
ShowMessage(IntToStr(pint^));
//字符串 & & 字符数组var
arr: array[0..5] of C
str:begin {可以把字符数组直接赋给字符串变量}
str := {但不能把一个字符串变量赋给字符数组}
{错误; 这需要用其他手段实现, 譬如复制或移动内存}
{其实字符串内部也是包含了一个字符数组, 所以能索引访问, 不过它的索引起始于 1}
ShowMessage(str[1]); {D}
//字符数组 & 字符指针var
arr: array[0..6] of C
p: PCbegin
arr := 'Delphi';
{如果直接把字符数组给字符指针, 结果不保险, 因为字符指针要找空字符(#0)结束}
{把数组的最后一个元素给 #0 就可以了}
arr[Length(arr)-1] := #0;
ShowMessage(p); {Delphi}
{假如把 #0 给到中间会怎样?}
arr[3] := #0;
ShowMessage(p); {D 给截断了}
如果自己调用api,最快的方法是用pchar转换,保证最后一个字节是null。
获取所有汉字与 Unicode 的对照表
List: TStringLbegin
List := TStringList.C
for i := $4e00 to $9fa5 do
s := #36 + IntToHex(i,4); {#36 是 $ 字符}
w := WideChar(i);
List.Add(s + '=' + w);
List.SaveToFile('c:\temp\Unicode-Hz.txt');
百度上还发现一奇技淫巧:Alt + X 组合键,MS Word 也会将光标前面的字符同其十六进制的四位 Unicode 编码进行互相转换。似乎可以拿这个做密码啊,神仙都没法知道。
n1 := lstrlen(p);n2 := lstrlen(buf);n1 := lstrlenA('Delphi 的魅力');n2 := lstrlenW('Delphi 的魅力');
ExtractStrings 函数就是, 譬如:var
List: TSbegin
str := 'e,1|w,2|s,3|n,4|v,5|';
List := TStringList.C
num := ExtractStrings(['|'], [], PChar(str), List);
ShowMessage(IntToStr(num)); {num 是分隔符的个数}
ShowMessage(List.Text);
{List 是分割后的列表}
lstrcpyn - 复制字符串, 同时指定要复制的长度lstrcpy - 复制字符串lstrcat - 合并字符串IsCharAlphaNumeric - 是否是个文字(字母或数字)IsCharAlpha - 是否是个字母
c := #19975;
{万}c := #$4E07;
把字符串复制到剪贴板
uses CClipboard.SetTextBuf(PChar(str));
Delphi字符串、PChar与字符数组之间的转换
设有以下三个变量: var s: p: a:array[1..20] 那么三者之间的转换如下: 1、字符串到PChar
p:=PChar(s); 2、PChar到字符串
s:=p; 3、PChar到字符数组
StrCopy(@a,p); 4、字符数组到PChar
PChar(@a); 5、字符串与字符数组之间的转换就只有通过PChar来中转了。例如下面这个例子: procedure TForm1.btn1Click(Sender: TObject); var str:array[1..10] begin StrCopy(@str,PChar(mmo1.Text)); mmo2.Text:=PChar(@str); end
两行代码的前后位置对调一下 ,运行结果就不同了是 Delphi 对字符串优化所造成的结果(Delphi 的 copy-on-write 技术)
AnsiString 可以直接当内存来使用,它不只可以存放字符,而是可以存放任何东西,你甚至可以将一个图片的数据存入 AnsiString 的内存块中。
Length 函数对于 ShortString 和 AnsiString 来说返回的是它们所存放的字符串的字节数,而不是字符数。Length 函数对于 WideString 来说,返回的就是字符数,而不是字节数
WideString 没有引用计数。其实 WideString 是为了方便使用 COM 而产生的,也就是 BSTR 字符串。
UniodeString,增加了 codePage 和 elemSize 域。PStrRec = ^StrRStrRec = packed record
codePage: W
// 代码页:Unicode、UTF-8、UTF-16、GB2312
elemSize: W
// 元素大小:一字符占几个字节
// 引用计数:字符串被几个字符串变量使用
// 字符串长度:字节数
在 system 单元中还定义了 UTF8String 和 UCS4String 类型的字符串,定义如下:UTF8String = type AnsiString(65001);UCS4String = array of UCS4C
{ UCS4Char = type LongW }RawByteString = type AnsiString($ffff); 这种类型的变量在接收任何格式的字符串时,都会保持源字符串的内存格式,不做任何改动。
X: PWbegin
Str:=Self.ClassN { TForm3 }
Memo1.Lines.Add(Str);
P := PCardinal(Str);
Dec(P); { 向前移动 4 个字节 }
Memo1.Lines.Add(IntToStr(P^));
字符串长度 }
Dec(P); { 再向前移动 4 个字节 }
Memo1.Lines.Add(IntToStr(P^));
引用计数 }
X:=PWord(Integer(P)-2); { 再向前移动 2 个字节 }
Memo1.Lines.Add(IntToStr(X^));
字符宽度 }
X:=PWord(Integer(X)-2); { 再向前移动 2 个字节 }
Memo1.Lines.Add(IntToStr(X^));
{ 结果 1200
UTF-16 代码页注册为代码页 1200 }
X^:=60001; {字符编码居然可以改变}
1200&UCS-2LE Unicode 小端序1201&UCS-2BE Unicode 大端序65000&UTF-7 Unicode65001&UTF-8 Unicode
不同的厂商对同一个字符集编码使用各自不同的名称:UTF-8在IBM称作代码页1208,在微软称作代码页65001,在SAP称作代码页4110.
微软在Windows操作系统没有转向UTF-16作为内码实现之前(也就是在Windows 2000之前),针对不同的使用地区与国家,定义了一系列的支持不同语言字符集的代码页,被称作"Windows(或ANSI)代码页"。代表性的是实现了ISO-8859-1的代码页1252.Windows-1252与ISO-8859-1并不完全一致。ISO-x80-0x9F范围的控制字符,在Windows-1252中被可打印字符取代。由于在web网页中,ASCII控制字符不起作用,所以网页一般用Windows-1252代码页标记替代ISO-8859-1标记。
chcp命令带一个整数参数,则改变命令行窗口的当前代码页为参数所指定。
最牛的一篇对String的解释文章:/PocketZ/archive//2983583.html
Views(...) Comments()回谈谈Delphi
XE4的试用感受
&来源:读书人网&【读书人网():综合教育门户网站】
散分.来谈谈DelphiXE4的试用感受RAD Studio XE4 目前最新版 官方 ISO 文件下载(3.76GB):http://altd.embar
来谈谈Delphi
XE4的试用感受RAD&Studio&XE4&目前最新版&官方&ISO&文件下载(3.76GB):/download/radstudio/xe4/delphicbuilder_xe4_win.iso五一回来结贴
[解决办法]&&关注XE4的感受!&[解决办法][解决办法][解决办法]这个真心好,值得支持。有空下来试试。[解决办法]给个KEY吧,好下来试用。[解决办法][解决办法]&传XE5&才支持&Android[解决办法]除了手机端,PC端不知道有什么改进[解决办法]不错,有待完善&,期待XE5的到来。。。[解决办法][解决办法][解决办法]用来做ios开发的?[解决办法]接分........[解决办法]在我看来XE4可能开启了死亡之旅。至少对于我可能是这样的。仔细查看XE3中VCL的代码,会发现有{$IFNDEF&NEXTGEN}&这样的定义。就名字来&NEXTGEN&来看,即&next&generation的意思。也就一下代编译器代表着Delphi的未来。因此我很好奇到底是什么样子的未来。于是我找到了Marco&Cantù,&Delphi&Product&Manager写的《The&Delphi&Language&for&Mobile&Development》其中有一句“here&we&are&referring&to&code&you&want&to&migrate&to&the&mobile&platform&of&course,&as&the&Delphi&Windows&compilers&are¬&going&to&change&any&time&soon”证明了我的观点,以后Delphi就是朝这个next&generation发展了。于是,我需要具体了解到底是什么内容。基于我现在的了解有以下内容:1.String将只会有一种UTF16(双字节字符串),不再有AnsiString&UnicodeSting&&&更不会有String[255].2.String以后不能修改&比如&var&s:&S&s[1]&:=&'a';这个会报错。
[dcc32&Warning]:&W1068&Modifying&strings&in&place&may¬&be&supported&in&the&future”&3.以后的String,第一个字符将不再是从下标1,而是下标04.类将使用ARC机制。简单来说,class将是类似于Interface的方式,通过引用计数来进行生命周期的&&管理。&&比如以后的代码可能是:[解决办法]关注一下。楼上说的压力好大。[解决办法]学习一下[解决办法]虽然看不懂,但是还是表示支持一下。嘿嘿。[解决办法]关键字和限制越来越多了。虚拟机化是一个趋势。delphi已经远远落后于其他开发工具了。新特性的引用代价也很大,就是会有很多看不见的bug.使用新版本的Delphi风险上升了。[解决办法]希望delphi能跟再次和c++对抗[解决办法]目前仍然Delphi2007的飘过,遇到bug再翻XE2、XE3的代码打补丁过来[解决办法]引用:会发现有{$IFNDEF&NEXTGEN}&这样的定义。就名字来&NEXTGEN&来看,即&next&generation的意思。…看来意思是如果要写一支程式能大小通吃、横跨桌面编译器与行动编译器,某些语法需要调整,如7种旧的string类型.&以下为官方说明文件&Two&New&Delphi&Mobile&Compilers&for&iOSThe&iOS&target&platform&is&supported&only&in&Delphi&mobile&applications,&which&use&one&of&the&two&new&Delphi&mobile&compilers&available&in&XE4:&&&&DCCIOS32.EXE,&the&Delphi&Cross&Compiler&for&the&iOS&Simulator
&&&&DCCIOSARM.EXE,&the&Delphi&Cross&Compiler&for&the&iOS&Device&Differences&between&Delphi&Desktop&Compilers&and&Delphi&Mobile&CompilersThe&two&Delphi&mobile&compilers&(DCCIOSARM&and&DCCIOS32)&are&quite&different&from&the&Delphi&desktop&compilers&(DCC32,&DCC64,&DCCOSX).&The&mobile&compilers&can&be&considered&a&"Next&Generation"&of&the&Delphi&language,&and&the&mobile&platform&is&a&new&step&in&the&continuing&evolution&of&the&Delphi&language.&Keep&in&mind,&however,&that&the&language&differences&typically&are¬&related&to&platform&differences.To&summarize:&&&&No&inline&assembly&is&supported&on&iOS,&but&four&atomic&intrinsic&functions&are&supported&by&the&Delphi&mobile&compiilers&&&&COM&is¬&supported&&&&(7种旧的string&将不支援)&&&&&Seven&of&the&older&string&types&are¬&supported:&&&&&&&&AnsiString&&&&&&&&WideString&&&&&&&&AnsiChar&and&PAnsiChar&&&&&&&&PWideChar&&&&&&&&OpenString&&&&&&&&ShortString&&&&&Strings&are:&&&&&&&&Immutable&(constant),&so&you&cannot&index&into&a&string&as&an&array&and&manipulate&the&characters&in&a&string&&&&&&&&&&&&If&you&attempt&to&modify&a&string,&the&Delphi&mobile&compilers&might&emit&the&message&W1068&Modifying&strings&in&place&may¬&be&supported&in&the&future&(Delphi).&&&&&&&&&&&&&You&can&specify&whether&the&message&x1068&is&emitted&as&a&warning&or&an&error.&In&the&Hints&and&Warnings&page,&set&the&warning&"Modifying&strings&in-place...."&to&"true"&or&"error".&&&&&&&&&0-based&instead&of&1-based&(requiring&possible&changes&to&string&handling&routines)&&&&&&&&&&&&You&can&use&the&new&Delphi&compiler&directive&{$ZEROBASEDSTRINGS}&to&change&the&string&indexing&scheme&locally.&However,&the&RTL&for&the&Delphi&mobile&compilers&uses&0-based&strings,&so&you&must&use&0-based&strings&when&you&are&using&the&RTL&in&a&Delphi&mobile&app.&For&example,&{$ZEROBASEDSTRINGS}&is&useful&if&you&have&an&isolated&instance&of&in-place&string&editing&that&you&cannot&migrate&to&0-based&indexing&at&the&moment.&It&is¬&safe&to&use&{$ZEROBASEDSTRINGS}&for&code&larger&than&a&&do¬&use&{$ZEROBASEDSTRINGS}&for&an&entire&module&or&application.&
&&&&&&&&For&all&string&handling,&we&recommend&using&TStringHelper&functions.&See&Migrating&Delphi&Code&to&iOS&from&Desktop&for&examples.&&&&&&&&For&editing&a&string&in&place,&we&recommend&using&TStringBuilder.&&&&&Automatic&&Counting&is&on&by&default&for&classes&as&well&as&interfaces,&strings&and&dynamic&arrays.&&&&&Note:&The&With&statement&might¬&be&supported&in&the&future&by&the&mobile&compilers&or&new&compilers.&We&recommend&that&you&refactor&or&rewrite&any&With&statements&in&your&code&base,&and&eliminate&With&statements&where&possible.For&more&information&about&writing&code&for&the&Delphi&mobile&compilers,&see&Migrating&Delphi&Code&to&iOS&from&Desktop.&[解决办法]还不会从7升级到更新的,&以后会了再用,&观望[解决办法]移动版的编译器和桌面版的特性有区别很正常,毕竟是简单架构,简化语言特性可以让编译器产生的代码效率高一些。但是win32、win64、osx编译器的特性应该会保持长期稳定的,不可能轻易去掉长期存在的一些东西,象with语句,尽管说了可能不再支持,但是废掉的可能性相当小,毕竟它在那里又有什么危害呢,不过是让编译器在with块中改变一下作用域而已,废掉要修改编译器,不带来效益,还可能带来新的问题,连goto都没废掉呢。[解决办法]还是要转移到XE4上,除非不用Delphi了[解决办法]关注.&&&&&&&&&&&&&&&&&&&&&&.[解决办法]delphi要是学学golang那样,任何对象都来自IInterface,实现这个都有生命自管理功能,那也挺不错的[解决办法]很久没来了,关注一下,Delphi&未来到底走向何方,拭目以待。。。[解决办法]佩服大牛!!!![解决办法]引用:看来&XE4&还是没有脱离&XCODE啊.../mobdevsetup/xe4/en/index.html先决条件为了构建和测试iOS应用程序,你需要以下条件:在Mac连接到同一网络的RAD&Studio在Mac上***的Xcode在Mac上***Xcode的命令行工具在您的Mac上***和运行平台助理为了测试你的iOS设备上的iOS应用程序的话,还需要以下条件:一个苹果开发者帐号(免费)和iOS开发者的帐户通过苹果($&99)***后的开发者***有准备的iOS设备通过USB电缆连接到您的Mac这个是说要有一台MAC电脑,并且在上面***有XCODE及XCODE命令行工具是吗?[解决办法]引用:在我看来XE4可能开启了死亡之旅。至少对于我可能是这样的。仔细查看XE3中VCL的代码,会发现有{$IFNDEF&NEXTGEN}&这样的定义。就名字来&NEXTGEN&来看,即&next&generation的意思。也就一下代编译器代表着Delphi的未来。因此我很好奇到底是什么样子的未来。于是我找到了Marco&Cantù,&Delphi&Product&Manager写的《The&Delphi&Language&for&Mobile&Development》其中有一句“here&we&are&referring&to&code&you&want&to&migrate&to&the&mobile&platform&of&course,&as&the&Delphi&Windows&compilers&are¬&going&to&change&any&time&soon”证明了我的观点,以后Delphi就是朝这个next&generation发展了。于是,我需要具体了解到底是什么内容。
基于我现在的了解有以下内容:1.String将只会有一种UTF16(双字节字符串),不再有AnsiString&UnicodeSting&&&更不会有String[255].2.String以后不能修改&比如&var&s:&S&s[1]&:=&'a';这个会报错。[dcc32&Warning]:&W1068&Modifying&strings&in&place&may¬&be&supported&in&the&future”&3.以后的String,第一个字符将不再是从下标1,而是下标04.类将使用ARC机制。简单来说,class将是类似于Interface的方式,通过引用计数来进行生命周期的&&管理。&&比如以后的代码可能是:[解决办法]自动释放,可能会导致系统运行速度变慢,参考J***A就知道。[解决办法]支持&下,顶[解决办法]哥还用着delphi7&。。。原始人吗------解决方案--------------------
&午饭后来直播这下载速度,让我1m的网情何以堪……[解决办法]搞这么多花样,也不知道能不能被企业接受。。。[解决办法][解决办法][解决办法]呵呵!俺也还在Delphi7中![解决办法]vcl开发感觉跟XE3差不多