没有的,可以在前端要求加个判断格式,只有ZIP的才行。或都把.rar的自己转换成zip
② 请问题各位DELPHI高手,如何在DELPHI中调用winzip来进行压缩和解压
装个borland的Team Source,橘桐在Team Source的安装目录下有pascal解宴枣压缩zip的圆祥坦源码。或者[email protected]我给你
③ 请教delphi是否有压缩和解压字符串函数
有的仔哗,在zlib单元有 ZCompressStr:压缩字符串,传人念拿行字符串,返回TBytes; ZDecompressStr:解压字符串,传人TBytes,返敏早回字符串; 具体用法自己查一下
④ Delphi 字符串太长怎么办
不会啊,string字段长度不会存不下这些啊
类型 最大长度 占用内存
ShortString 255 2-256 向后兼容
AnsiString 大约2^31 4字节-2G 8位(ANSI)字符
WideString 大约2^30 4字节-2G 多用户服务和多语言程序
如果只简单地用 String 定义字符串,那么该字符串可能是短字符串也可能是 ANSI 长字符串,这取决于 $H 编译指令的闭蚂值,$H+(缺省)代表长字符串(ANSIString 类型)。长字符串是 Delphi 库中控件使用的字符串扒汪。
你轿此埋看看是不是编译指令问题
⑤ 请教delphi是否有压缩和解压字符串函数
delphi 内置有 zlib 单元(高版本为 system.zlb),uses 该单元后,可以使用其中的两个功能函数来完成,以下是示例:
procereTForm1.Button1Click(Sender:TObject);
var
tb:陆颂TBytes;
s:string;
begin
孝缓tb:=ZCompressStr(Edit1.Text);
s:=ZDecompressStr(tb);
ShowMessage('解压后的字符串巧悉模:'+s);
end;
运行截图:
⑥ 请教高手Delphi的字符串压缩算法!解决了马上给分
ibear大熊方法改进搜索串,遇到连续的字符,如果符合压缩的条件(压缩生成的字节数小于原数,一般是连续的4个字符或4个字符以上),用一个标志字符(在你的串中不存在的)和 这个字符 和 一个数值来表示空格,数值大小看需要,byte或word如果字符串中有数字的话,在最后还要加一个标志字符.我的考虑迅洞了其他的亩洞枯情况,如果光压缩空格的话,还是大熊颤物的吧 查看原帖>>
⑦ 是否能用delphi的zlib解压java gzip压缩的字符串
可以使用 delphi 与 java 完成数据压缩还原的交通。
不管是 java还是 delphi,算法都有现成的控件,关键是要使用同样的压缩协议。请参考以下资料:
在Java与Delphi间交互实现Zlib压缩算法
http://blog.csdn.net/hexingyeyun/article/details/8678154
⑧ delphi 怎么来压缩文件
使用时,需要Zlib.pas和 Zlibconst.pas两个单元文件,这两个文件保存在 Delphi 5.0安装光盘上
InfoExtrasZlib目录下,此外,在 InfoExtrasZlibObj目录中还保存了 Zlib.pas单元引用的
Obj文件,把这个目录拷贝到delphi的lib下,即可。可以适当的改动比如增加目录压缩和分文件压缩,其实就是在文件流前面增加一部分描述结构就是,不多说。使用
时,还要use zlib单元。 两个函数如下:
procere CompressIt(var CompressedStream: TMemoryStream; const CompressionLevel: TCompressionLevel);
// 参数是传递的流和压缩方式
var
SourceStream: TCompressionStream;
DestStream: TMemoryStream;
Count: int64; //注意,此处修改了,原来是int
begin
//获得流的原始尺寸
Count := CompressedStream.Size;
DestStream := TMemoryStream.Create;
SourceStream := TCompressionStream.Create(CompressionLevel, DestStream);
try
//SourceStream中保存着原始的流
CompressedStream.SaveToStream(SourceStream);
//将原始流进行压缩, DestStream中保存着压缩后的流
SourceStream.Free;
CompressedStream.Clear;
//写入原始图像的尺寸
CompressedStream.WriteBuffer(Count, SizeOf(Count));
//写入经过压缩的流
CompressedStream.CopyFrom(DestStream, 0);
finally
DestStream.Free;
end;
end;
procere UnCompressit(const CompressedStream: TMemoryStream; var UnCompressedStream: TMemoryStream);
//参数 压缩过的流,解压后的流
var
SourceStream: TDecompressionStream;
DestStream: TMemoryStream;
Buffer: PChar;
Count: int64;
begin
//从被压缩的图像流中读出原始的尺寸
CompressedStream.ReadBuffer(Count, SizeOf(Count));
//根据尺寸大小为将要读入的原始流分配内存块
GetMem(Buffer, Count);
DestStream := TMemoryStream.Create;
SourceStream := TDecompressionStream.Create(CompressedStream);
try
//将被压缩的流解压缩,然后存入 Buffer内存块中
SourceStream.ReadBuffer(Buffer^, Count);
//将原始流保存至 DestStream流中
DestStream.WriteBuffer(Buffer^, Count);
DestStream.Position := 0; //复位流指针
DestStream.Position := length(VER_INFO);
//从DestStream流中载入图像流
UnCompressedStream.LoadFromStream(DestStream);
finally
FreeMem(Buffer);
DestStream.Free;
end;
end;
使用的例子如下:
procere TForm1.Button5Click(Sender: TObject);
//把指定文件压缩然后保存为另外一个压缩包,
//呵呵,我使用的时候是把后缀改成cab,可以唬一些人吧?
var
SM: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
if SaveDialog1.Execute then
begin
SM := TMemoryStream.Create;
try
Sm.LoadFromFile(OpenDialog1.FileName);
SM.Position := 0;
Compressit(sm, clDefault);
sm.SaveToFile(SaveDialog1.FileName);
finally
SM.Free;
end;
end;
end;
end;
procere TForm1.BitBtn2Click(Sender: TObject);
//把指定的压缩包解成原来的文件。
var
SM, DM: TMemoryStream;
begin
if OpenDialog1.Execute then
begin
if SaveDialog1.Execute then
begin
SM := TMemoryStream.Create;
DM := TMemoryStream.Create;
try
Sm.LoadFromFile(OpenDialog1.FileName);
SM.Position := 0;
UnCompressit(sm, dm);
dm.Position := 0;
dm.SaveToFile(SaveDialog1.FileName);
finally
SM.Free;
DM.Free;
end;
end;
end;
end;
⑨ 在delphi中如何把大的字符串分成固定大小的几个小字符串
用Copy啊塌纯。
给你随手租衫圆写弊塌了一个:
procere TForm1.Button1Click(Sender: TObject);
var
s: String;
s1, s2, s3, s4: String;
i: Integer;
begin
s := '1234567890';
i := 1;
s1 := Copy(s, i, 3);
ShowMessage(s1);
Inc(i, 3);
s2 := Copy(s, i, 3);
ShowMessage(s2);
Inc(i, 3);
s3 := Copy(s, i, 3);
ShowMessage(s3);
Inc(i, 3);
s4 := Copy(s, i, 1);
ShowMessage(s4);
end;
⑩ DELPHI基础教程:Delphi应用程序的应用(一)[3]
下面是一个简单的帮助工程文件
[OPTIONS]
CONTENTS=context_string
TITLE=title
PRESS=press_level
ERRORLOG=log_filename
[CONFIG]
BrowseButtons()
胡岁[FILES]
RTF_filename_
RTF_filename_
RTF_filename_
[OPTIONS]
Context_String是内容主题的内容字符串 这一行并不是必须有的 如果没有第一行 WinHelp把第一个帮助文件的第一个主题作为内容主题
TITLE = title
title是帮助窗口的标题 不要将标题用引号括住 这一行也不是必需要有的 如果没有 缺省的标题是Windows Help
CoMPRESS = Compress level
Compress_level决定工程文件在编译时是否被压缩 压缩后的文件编译时要花较长的时间
表 为Compress_level的取值
表 Compress_leve的取值及含义
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
取值局含 编译时间 文件大小
─────────────────────────────
FALSE 快 大(无压缩)
MEDIUM 中等 中等(高度压缩)
HIGH 慢 小(无压缩)
快 大(无压缩)
慢 小(高度压缩)
No 快 大(无压缩)
TRUE 慢 小(高度压缩)
YES 慢 小(高度裤腊睁压缩)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ERROR(LOG = log_filename)
log_filename是WinHelp运行时的错误输出文件 如果编译时工程文件出错 需要一个记录错误的文件 如果工程文件有这一行 WinHelp在运行时自动创建的文件 如果没有 错误将显示在屏幕上 但不存入任何文件中
BrowseButton()
如果有这一行 帮助按钮条中将出现>>和《键 要实现顺序浏览 还需在帮助文件中定义 详见 节中的插入+脚标
[FILEs]
RTF_filename是 RTF源文件名 所有的RTF文件构成整个帮助系统 每个RTF 应处在
不同的行
lishixin/Article/program/Delphi/201311/25200