View Full Version : سوال: دلفی 7 دستوری بنویسم که کارکترهای فارسی وعربی و انگلیسی و...حذف گردد
ali_abbasi22145
دوشنبه 16 اردیبهشت 1392, 12:30 عصر
با دلفی 7 دستوری بنویسم که کارکترهای فارسی وعربی و انگلیسی و...حذف گردد.
چون نام فایل های که به این شکل هستند به دلیل پشتیبانی نکردن دلفی 7 از یونیکد باز نمی شوند
مثل:" شهرام ابراهيمي 740401.jpg " تبدیل شود به"740401.jpg"
مثل: " سيد كاوه توكلي طهران 761103.jpg.jpg " تبدیل شود به "761103.jpg"
به خصوص این را خیلی خطا می دهد چون ک و ی دارد: "علی 110کرمانی.jpg" تیدیل شود به "110.jpg"
این سه تبدیل که مثال زدم حروف ها حذف شود مشکل من کاملا حل می شود.
یوسف زالی
دوشنبه 16 اردیبهشت 1392, 13:03 عصر
سلام.
function StrToAnsiFileName(s: string): string;
var
i: integer;
begin
result := '';
for i := 1 to length(s) do
if s[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '_', '.', ' '] then
result := result + s[i];
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(StrToAnsiFileName('ÓáÇã adff 13.jpg'));
end;
javad_rajabloo
سه شنبه 17 اردیبهشت 1392, 13:06 عصر
اصل هدفت رو بگو شاید بتونیم بهتر راهنماییت کنیم
ali_abbasi22145
سه شنبه 17 اردیبهشت 1392, 13:11 عصر
سلام
من فایل با نام "علی.jpg" را نه می توان تغییرنام ونه کپی با نام دیگر ونه می توانم در یک Image باز کنم.
مثل دستور زیر:
RenameFile('C:\SCM\Pictures\علي.jpg','C:\SCM\Pi ctures\12345.jpg' );
شما متدی دارید که این فایل را که Attach کردم را لود کنم یا تغییرنام دهم یا کپی کنم.
ali_abbasi22145
سه شنبه 17 اردیبهشت 1392, 15:50 عصر
سلام
این تابع را از یک سایت برداشتم و دلفی 7 کامپایل کرد ولی نمی دانم چطوری آن را در برنامه صدا بزنم:
لینک:
http://stackoverflow.com/questions/15158621/how-to-handle-utf-8-and-ansi-conversion-before-delphi-2009
/////////// Unicode LoadFile ///////////////////////////////////////////////////
function TForm1.Unicode_LoadFile(const fn: string): WideString;
var
f:TFileStream;
src:AnsiString;
wx:word;
i,j:integer;
begin
if FileExists(fn) then
begin
f:=TFileStream.Create(fn,fmOpenRead or fmShareDenyNone);
try
f.Read(wx,2);
if wx=$FEFF then
begin
//UTF16
i:=(f.Size div 2)-1;
SetLength(Result,i);
f.Read(Result[1],i*2);
//detect NULL's
for j:=1 to i do if Result[j]=#0 then Result[j]:=' ';//?
end
else
begin
i:=0;
if wx=$BBEF then f.Read(i,1);
if (wx=$BBEF) and (i=$BF) then
begin
//UTF-8
i:=f.Size-3;
SetLength(src,i);
f.Read(src[1],i);
//detect NULL's
for j:=1 to i do if src[j]=#0 then src[j]:=' ';//?
Result:=UTF8Decode(src);
end
else
begin
//assume current encoding
f.Position:=0;
i:=f.Size;
SetLength(src,i);
f.Read(src[1],i);
//detect NULL's
for j:=1 to i do if src[j]=#0 then src[j]:=' ';//?
Result:=src;
end;
end;
finally
f.Free;
end;
end
else
Result:='';
end;
/////////// Unicode LoadFile ///////////////////////////////////////////////////
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.