我通过opendialog得到一个文件名(含路径),例如:c:\TestFile\111\222\3333\4444\5555\6666\myfile.txt,
由于路径太长我想得到类似这种c:\TestFile\111\222\...\6666\myfile.txt形式,怎么实现?有没有现成的函数可以使用。 我现在使用copy函数+文件名形式来获得,感觉不怎么理想。
由于路径太长我想得到类似这种c:\TestFile\111\222\...\6666\myfile.txt形式,怎么实现?有没有现成的函数可以使用。 我现在使用copy函数+文件名形式来获得,感觉不怎么理想。
解决方案 »
- 紧急求救:Delphi7如何实现在自己开发的窗体中播放PPT(Office2007)?
- 弱弱的问一个简单计算问题
- 热烈庆祝我们一家3口的第一个中秋节!
- popmenu的问题。
- 偶看了 DELPHI底层的 topenpicturedialog的代码
- DELPHI-数据库版快来推荐经典篇
- 怪问题—关于三层结构?
- 紧急求救,[Fatal Error] company_Unit.pas(88): Line too long (more than 1023 characters),使编译中断
- 大批量数据导入Excel,如何加快速度
- 怎样拷贝整个目录,包含子目录一起拷贝,有现成函数更佳
- 求一个delphi7学习交流群
- dxComponentPrinter如何打印多个组件?
http://apps.hi.baidu.com/share/detail/12708307
opendialog1.filter:='所有文件(*.*)|*.*';
opendialog1.filter:='文本文件(*.txt)|*.txt';
opendialog1.filter:='文本文件(*.txt)|*.txt|FLASH文件(*.swf)|*.swf';
如果显示2个以上的类型,中间用;隔开,如:
支持文件类型(*.swf;*.jpg)|*.swf;*.jpg
.......= opendialog1.filename
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
application.MessageBox(pchar(OpenDialog1.FileName),'',mb_ok)
end; 1:opendialog1:=topendialog.create(application.mainform);
opendialog1.filter:='图形文件(*.123)|*.123|所有文件(*.*)|*.*|';//'所有文件(*.*)|*.*|
opendialog1.DefaultExt:='123';
opendialog1.InitialDir:=ExtractFileDir(application.exename);
copy左边几个+'...'+copy右边几个 组成新字符串了//函数功能:得到中间省略的字符串
function GetEllipsisString(const S: string; Len: Integer = 10): string;
begin
Result := S;
if Length(Result) < 20 then
Exit;
Result := Copy(S, 1, Len)+ '...'+ Copy(S, Length(S) + 1 - Len, Len);
end;
但是在你所描述的路径里并不能起作用,能简化描述的路径都是有规则的
dwFlags: DWORD): BOOL; stdcall; External 'shlwapi.dll' Name 'PathCompactPathExW';第一个是输出
第二个是输入
第三个是设定长度,第四个0
procedure TForm1.Button1Click(Sender: TObject);
var
pstr: array [0 .. MAX_PATH] of WideChar;
begin
if OpenDialog1.Execute then
begin
PathCompactPathExW(pstr, PWideChar(OpenDialog1.FileName), 100, 0);
Edit1.Text := String(pstr);
end;
end;
原始路径是:C:\Windows\winsxs\msil_aspnet_compiler.resources_b03f5f7f11d50a3a_6.1.7600.16385_zh-cn_d255d2f0ed7db8b4\aspnet_compiler.resources.dll得出的结果是:C:\Windows\winsxs\msil_aspnet_compiler.resources_b03f5f7f11d50a3a_...\aspnet_compiler.resources.dll
没有人会这样来保存变量,这个函数的应用主要是给使用者带来清晰的文件名显示,比如一个label的宽度不足,用户也能清楚文件名是什么,而不是一个半截的路径,特别是在复制或者处理多个文件时。
错误信息如下:
[Warning] Unit1.pas(37): Suspicious typecast of TCaption to PWideChar
[Error] Unit1.pas(44): Declaration expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
或者声明一个widestring的变量