PDA

View Full Version : سوال: تغییر جهت پرانتز هنگام ذخیره TRichEdit



mbshareat
چهارشنبه 07 خرداد 1399, 12:28 عصر
سلام:لبخند:
من نیاز به برنامه ای دارم که متنی با ساختار قلم داس رو بخونه و بنویسه .
بنابر این باید هنگام بارگذاری و ذخیره متن، کارکترها رو دستکاری کنم.
از اونجا که نیاز به ویرایش متن دارم از RichEdit استفاده می کنم.:خجالت:
مشکلی که برام پیش میاد اینکه جهت پرانتز و خانواده اش (){}[]<>«» در ریچ ادیت همیشه همونطور که دیده میشند نیست.ممکنه به نظر برسه پرانتز بازه و ذخیره کنیم پرانتز بسته ذخیره بشه.
ظاهرا جهت (باز و بسته بودن)این کاکترها طبق کارکتر قبل یا بعد از خود تعریف میشند.
من حتی شده پرانتز رو باز و بسته کنم و وسط و کنارش هم انگلیسی بنویسم بعد از ذخیره و بازیابی ببینم جهت پرانتز و باز و بسته یکی شده و جای دو کلمه انگلیسی هم تغییر کرده.

گفتم شاید اگر کارکتر دیگه ای رو با شکل پرانتز تعریف کنم مشکل حل بشه .
مثلا کارکترهای 135و134رو به شکل پرانتز بسته و باز تعریف کردم.یعنی کپی پیست بکنیم در برنامه دیگه ‡† الصاق می کنه. ولی در نمایش به خاطر نوع تعریف کارکتر در قلم مخصوص، پرانتز به نظر می رسه .
اما هنوز هم این کارکترها رو مثل پرانتز بررسی می کنه.

این نکته رو هم بگم که در KeyPress کارکترهای همخانواده پرانتز رو با کارکتر جایگزین که شکلشون رو مثل پرانتز تعریف کردم جایگزین می کنم.
شاید اگر از Richedit.lines.savetofile استفاده کنم درست ذخیره کنه ولی به درد من نمیخوره چون من کارکترهای تبدیل شده رو در فایل میخوام.

بنابر این مجبورم با کدی مثل کد زیر (تبدیل کارکترها هم کد جدا میخواد)کارکتر ها رو تبدیل کنم.
Procedure LoadFileStr(FileName:String;Out S:String);Var
St:TStrings;
Begin
St:=TStringList.Create;
St.LoadFromFile(FileName);
S:=Copy(St.Text,1,Length(St.Text)-2);
St.free;
End;
procedure SaveFileStr(FileName,S:String);
Var
F:File;
begin
AssignFile(F,FileName);
ReWrite(F,1);
Seek(F,0);
BlockWrite(F,Pointer(S)^,Length(S));
CloseFile(F);
end;
procedure TForm1.SaveButClick(Sender: TObject);
var
S:String;
begin
S:=RichEdit1.Lines.Text;
SaveFileStr('C:\tst.txt',S);
end;


procedure TForm1.LoadButClick(Sender: TObject);
var
S:String;
begin
LoadFileStr('C:\tst.txt',S);
RichEdit1.Lines.Text:=S;
end;



حالا اگر مثلا ریچ ادیت راست چین باشه (که نیاز هم دارم اینطور باشه)و بنویسیم B)L) وقت بازیابی از فایل برعکس میشه و میشه )B(L:گیج:

من سه برنامه طراحی قلم رو امتحان کردم.FontCreator Fontographer , FontLabStudio. فقط آخری تونست قلم معتبر بسازه.
(گاهی برنامه اصلا نمی تونه قلم ttf بسازه و گاهی میسازه ولی وقتی استفاده می کنی مثلا به جای تاهوما، آریال نشون میده و تعیین اسم قلم هم دنگ و فنگ داره)
شکل خانواده پرانتز رو با کپی پیست خانه جدول کارکتر،تعریف کردم.(ممکن بود بشه برم داخل سلول مربوط به کارکتر و شکل رو کپی بگیرم یا اصلا شکل پرانتز رو در سلول مثلا 134و135 خودم ترسیم کنم)
علاوه بر اینها ظاهرا تعیین زبان صفحه کلید در KeyPress ، نمیتونه مشکل رو حل کنه.

کسی میتونه راه حلی ارائه کنه؟
آیا نوع تعریف کارکتر میتونه طور دیگه ای باشه؟ آیا کسی در مورد تعریف کارکتر تجربه ای داره؟
آیا میشه در ریچ ادیت مثل تعیین رنگ، استایل برای این کارکترها تعیین کرد که مثلا همیشه انگلیسی حساب بشند؟

با اینکه مشکل ترکیب انگلیسی و فارسی عام البلوی است، به احتمال ناچیزی امیدوارم کسی پیدا بشه به جای سوال کردن،یه راهنمایی بکنه.:ناراحت:
من حتی نمی دونم چی رو در گوگل جستجو بدم این مشکل خارجیها نیست ...

hp1361
چهارشنبه 14 خرداد 1399, 19:12 عصر
سلام:لبخند:
من نیاز به برنامه ای دارم که متنی با ساختار قلم داس رو بخونه و بنویسه .
بنابر این باید هنگام بارگذاری و ذخیره متن، کارکترها رو دستکاری کنم.
از اونجا که نیاز به ویرایش متن دارم از RichEdit استفاده می کنم.:خجالت:
مشکلی که برام پیش میاد اینکه جهت پرانتز و خانواده اش (){}[]<>«» در ریچ ادیت همیشه همونطور که دیده میشند نیست.ممکنه به نظر برسه پرانتز بازه و ذخیره کنیم پرانتز بسته ذخیره بشه.
ظاهرا جهت (باز و بسته بودن)این کاکترها طبق کارکتر قبل یا بعد از خود تعریف میشند.
من حتی شده پرانتز رو باز و بسته کنم و وسط و کنارش هم انگلیسی بنویسم بعد از ذخیره و بازیابی ببینم جهت پرانتز و باز و بسته یکی شده و جای دو کلمه انگلیسی هم تغییر کرده.

گفتم شاید اگر کارکتر دیگه ای رو با شکل پرانتز تعریف کنم مشکل حل بشه .
مثلا کارکترهای 135و134رو به شکل پرانتز بسته و باز تعریف کردم.یعنی کپی پیست بکنیم در برنامه دیگه ‡† الصاق می کنه. ولی در نمایش به خاطر نوع تعریف کارکتر در قلم مخصوص، پرانتز به نظر می رسه .
اما هنوز هم این کارکترها رو مثل پرانتز بررسی می کنه.

این نکته رو هم بگم که در KeyPress کارکترهای همخانواده پرانتز رو با کارکتر جایگزین که شکلشون رو مثل پرانتز تعریف کردم جایگزین می کنم.
شاید اگر از Richedit.lines.savetofile استفاده کنم درست ذخیره کنه ولی به درد من نمیخوره چون من کارکترهای تبدیل شده رو در فایل میخوام.

بنابر این مجبورم با کدی مثل کد زیر (تبدیل کارکترها هم کد جدا میخواد)کارکتر ها رو تبدیل کنم.
Procedure LoadFileStr(FileName:String;Out S:String);Var
St:TStrings;
Begin
St:=TStringList.Create;
St.LoadFromFile(FileName);
S:=Copy(St.Text,1,Length(St.Text)-2);
St.free;
End;
procedure SaveFileStr(FileName,S:String);
Var
F:File;
begin
AssignFile(F,FileName);
ReWrite(F,1);
Seek(F,0);
BlockWrite(F,Pointer(S)^,Length(S));
CloseFile(F);
end;
procedure TForm1.SaveButClick(Sender: TObject);
var
S:String;
begin
S:=RichEdit1.Lines.Text;
SaveFileStr('C:\tst.txt',S);
end;


procedure TForm1.LoadButClick(Sender: TObject);
var
S:String;
begin
LoadFileStr('C:\tst.txt',S);
RichEdit1.Lines.Text:=S;
end;



حالا اگر مثلا ریچ ادیت راست چین باشه (که نیاز هم دارم اینطور باشه)و بنویسیم B)L) وقت بازیابی از فایل برعکس میشه و میشه )B(L:گیج:

من سه برنامه طراحی قلم رو امتحان کردم.FontCreator Fontographer , FontLabStudio. فقط آخری تونست قلم معتبر بسازه.
(گاهی برنامه اصلا نمی تونه قلم ttf بسازه و گاهی میسازه ولی وقتی استفاده می کنی مثلا به جای تاهوما، آریال نشون میده و تعیین اسم قلم هم دنگ و فنگ داره)
شکل خانواده پرانتز رو با کپی پیست خانه جدول کارکتر،تعریف کردم.(ممکن بود بشه برم داخل سلول مربوط به کارکتر و شکل رو کپی بگیرم یا اصلا شکل پرانتز رو در سلول مثلا 134و135 خودم ترسیم کنم)
علاوه بر اینها ظاهرا تعیین زبان صفحه کلید در KeyPress ، نمیتونه مشکل رو حل کنه.

کسی میتونه راه حلی ارائه کنه؟
آیا نوع تعریف کارکتر میتونه طور دیگه ای باشه؟ آیا کسی در مورد تعریف کارکتر تجربه ای داره؟
آیا میشه در ریچ ادیت مثل تعیین رنگ، استایل برای این کارکترها تعیین کرد که مثلا همیشه انگلیسی حساب بشند؟

با اینکه مشکل ترکیب انگلیسی و فارسی عام البلوی است، به احتمال ناچیزی امیدوارم کسی پیدا بشه به جای سوال کردن،یه راهنمایی بکنه.:ناراحت:
من حتی نمی دونم چی رو در گوگل جستجو بدم این مشکل خارجیها نیست ...

سلام

در کدپیج ها، کاراکتری هست که جهت تایپ رو تغییر میده(RLM, LRM). در مورد اینا جستجو کنید