DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: teacherlau
今日帖子: 63
在线用户: 26
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/7/13 15:19:19
标题:
请问:如何把大量字符串按格式加入到 pas 文件中? 浏览:1468
加入我的收藏
楼主: 我有一个 txt 文件,格式如下:大概有1~2万行
asdfdasfds
asdffdsfd3
32ferfefe
24233425353
ddfdgdgfdgf
..........

我想把这些内容 全部复制到 pas 文件内,
如:  
const
  C1: string =
'asdfdasfds
asdffdsfd3
32ferfefe
24233425353
ddfdgdgfdgf
..........'   只用 前后 加 '' 不能编译..

请问有什么方法 可以简单快捷 加到 pas文件里面? 

即 保留分行 ,而不用每行都加 ''+ 如这样,..否则工作量就太大了...不能使用 load txt...方法
const
  C1: string =
'asdfdasfds'+
'ddfdgdgfdgf'+
'..........'
----------------------------------------------
谢谢各位大大
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2018/7/13 15:34:19
1楼: 写成
const
  c1 : array[1..100000] of string =
          'asdasfasdf,'+
          'asdasfasdf,'+
          'asdasfasdf,'+
          'asdasfasdf';
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 mprjcf (mprjcf) ★☆☆☆☆ -
普通会员
2018/7/13 15:35:35
2楼: 写一个程序把大量文字排版好,复制粘贴
----------------------------------------------
他们总是取笑失败者,以酷似智者;他们也总是为成功者喝采,以取得赏金。
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/7/13 17:06:35
3楼: 2 楼正解,语法有点错误,稍微改改就行。
string 是有长度限制的 2G个字节以内。
但是 代码中的 'xxx' 这个 xxx 更有长度限制,比 string 的长度还少很多。
具体多少忘了。
所以,用 string 数组,才是比较好的写法。
希望数组没有个数限制吧。

关键你这样做,一个 EXE 80% 的内容就是你的字符串了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2018/7/13 18:50:46
4楼: 还有一个方法,用 Notepad ++ 作多行一次性修改。
Alt + shift 再用上下左右 page up page down
每一行头都加上 text.add(' 行尾加上 '); 
那在 Delphi 上就用 Text 去取代 String,当然 Memo Array 等都可以。

Notepad ++ 这功能一直是用户要求 Delphi IDE 加上的。逐行修改太烦人了。
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2018/7/13 18:54:02
5楼: 当然若未用过又时间急需的话,写一个小程序去修改也不需多少时间吧。
否则真的应会用 Notepad ++ 这功能,工作省时不少。
----------------------------------------------
-
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2018/7/13 19:17:32
6楼: 方法1,\r\n
ctrl+f,调出替换对话框,查找\r\n;
替换为:xxx(要添加的特殊字符);
扩展(\n,\r,\t,\0,\x...)
循环查找,向下
执行替换。

方法2,正则法
正则表达式下,$表示行尾,^表示行首.(记得选择“正则表达式”的选中框)
----------------------------------------------
-
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/7/13 21:05:57
7楼: 谢谢楼上各位...

改格式后,复制进 pas,  c:string:='xxxxxxxxxx'

delphi 直接退出了...呵呵..

用数组就没有问题...

谢谢各位....
----------------------------------------------
谢谢各位大大
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/7/13 21:32:45
8楼: 继续问个问题.......

请问 如何把 数组 load 入 Tstringlist ?

除以下代码,

MyStringList.Clear;
For i := Low(MyArray) to High(MyArray) Do
  MyStringList.Add(MyArray[i]);

有没有 更快的...如:  SL.Load(Array)   之类  ??

..谢谢.......
----------------------------------------------
谢谢各位大大
作者:
男 pp0123 (pp0123) ★☆☆☆☆ -
普通会员
2018/7/14 7:55:30
9楼:  ** 老猫已经给你说了不能用 String 的原因
你可用 Stringlist :

 animals := TStringList.Create;
 animals.Add('Cat');
 animals.Add('Mouse');
 animals.Add('Giraffe');

若用 Array 就是你那方法, 若是从档案抄入, 可用 LoadFromFile,
但你的方法非常笨, 把两万行数据当四万行记忆空间去处理.

请将手册网址 Bookmark 起来, 大家都是先查手册的.
http://docwiki.embarcadero.com/Libraries/Tokyo/en/Main_Page
http://www.delphibasics.co.uk/
https://www.thoughtco.com/delphi-programming-4133475
----------------------------------------------
-
作者:
男 sail2000 (小帆工作室) ★☆☆☆☆ -
盒子活跃会员
2018/7/14 8:22:38
10楼: 这样搞。。。
用数据库不行吗?
----------------------------------------------
delphi 是兴趣,和工作无关,即使它倒闭。又不靠它 delphi 吃饭,怕甚?
作者:
男 mochizuki (mochizuki) ★☆☆☆☆ -
普通会员
2018/7/14 12:33:34
11楼: 用TStringList的LoadFromFile不就行了吗?为什么一定要写入pas文件?
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2018/7/14 21:38:56
12楼: 楼主的意思大概是想一个 EXE 搞定,不想发布一个 EXE 外带一个数据文件。否则直接用 LoadFromFile 搞定。

用一个EXE搞定,也不一定要把字符串都放进 pas 文件。用资源文件的方式,编译后,这些个字符串也就在你的 EXE 里面了。

如果用资源文件,请参考:《Windows 下编译 EXE 文件时把一个外部 txt 文件编译到 EXE 里面》,地址:https://blog.csdn.net/pcplayer/article/details/80561260
----------------------------------------------
-
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/7/14 22:44:04
13楼: 谢谢楼上,

确实就只是想 文件 越少越好... 

谢谢各位...
----------------------------------------------
谢谢各位大大
作者:
男 kuei (kuei) ★☆☆☆☆ -
盒子活跃会员
2018/7/15 0:16:54
14楼: 不是有将 
EXE、Dll或其他文件封存到资源文件(Using Resource Files)中,
启动后在解开使用的方法吗?
有需要这么大费周章吗?
----------------------------------------------
-
作者:
男 wr960204 (武稀松) ★☆☆☆☆ -
盒子活跃会员
2018/7/16 9:15:48
15楼: 我之前是为了不让这些数据出现在资源里面,写了个工具叫bintopas,先把任意文件转到pas元文件,而且是代码,是使用内联汇编的db指令拼凑出来的。隐蔽性比较好,而且加载速度也比较好。唯一的缺点就是有些文件特别大,转出来的pas也非常大,不要用Delphi打开浏览这个文件,会很卡。
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
男 xgwzw (hanry) ★☆☆☆☆ -
普通会员
2018/7/28 23:17:30
16楼: 大佬 bintopas 这个工具有下载的么
----------------------------------------------
-
作者:
男 cnpack (CnPack) ★☆☆☆☆ -
普通会员
2018/7/29 15:48:58
17楼: CnPack IDE专家包里有个类似功能。

只要把字符串直接粘贴到编辑器的PAS中,并选中,然后执行CnPack菜单、编码工具集、转换为字符串,应该就能达到楼主所需的效果。
----------------------------------------------
欢迎使用CnPack IDE Wizards
http://www.cnpack.org/
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS