كيف يمكن حفظ إعدادات ؟
#1
- لماذا يتم حفظ الإعدادات بعنصر memo أثناء الكتابة أفقيا فقط ، أقصد نفس السطر ، بينما لو تم الضغط على Enter ، تحفظ بالملف إيني ، و لا تتم القراءة أثناء التشغيل (يعني لا يعرض إلا السطر الأول فقط)
- كيف يتم حفظ مسار الصورة (إذا كانت في نفس مجلد البرنامج ) بدون كتابة المسار الكلي (الذي ينجم عنه رسالة الخطأ إذاتم تشغيله بجهاز آخر لافتقداد الملف على المسار المحفوظ)
إقتباس :imgValue=D:\Ini\01.jpg
هكذا
إقتباس :imgValue=01.jpg
- الأهم من هذا : كيف يمكن حفظ إعدادات أخرى مثل اللون بواسطة ColorDialog أو ColorBox للفورم مثلا؟
(أما إذا تم تحديد اللون مسبقا (أو تم وضع مجموعة محدودة من الألوان) فهذا ممكن بصيغة مباشرة _بما سلف شرحه .)


آمل أن الإفادة تمت ، كما أطمع في الإستفادة ، جزاكم الله ألف خير .
و السلام عليكم.


الملفات المرفقة
.rar   2_Ini.rar (الحجم : 305.01 ك ب / التحميلات : 187)
الرد
#2
السلام عليكم .

اخي هناك ملاحظة اهم من كل هذا .

انظر الكود المكتوب في برنامجك :

PHP كود :
procedure TForm1.Button1Click(SenderTObject);
begin
with tinifile
.create('..\ini\star.ini')do   begin
writebool
('Checkbox','CheckboxValue',checkbox1.Checked);
writestring('Edit','EditValue',edit1.Text);
writestring('Memo','MemoValue',memo1.Text);  
writestring('img','imgValue',OpenPictureDialog1.FileName);
end;
end;

procedure TForm1.FormCreate(SenderTObject);
begin
with tinifile
.create('..\ini\star.ini')do   begin
checkbox1
.Checked:=readbool('Checkbox','CheckboxValue',false);
edit1.Text:=readstring('Edit','EditValue',edit1.Text);
Memo1.text:=readstring('Memo','MemoValue',memo1.Text);
img:=readstring('img','imgValue',img);
end;
 
image1.Picture.LoadFromFile(img);
end

لماذا لاتحرر tinifile من الذاكرة ؟؟؟؟

هناك
Try
.
.
.
Finally
Free

***
للتعامل مع ال Memo او اي مكون فيه ال TStrings إذا إطلغت على ملف الHelp للدلفي فيما يخص ال IniFiles هناك :

ReadSection();
ReadSections();
ReadSectionValues();


فيما يخص الالوان هناك :

StringToColor و ColorToString في وحدة ال Graphics يمكنك ان تستفيد منهما .
الرد
#3
السلام عليكم
أخي نبيل
لم أفهم ما قصدته في السؤال الأول
أما بخصوص حفظ إعدادات المكونات بصفة عامة، فأفضل طريقة ملفات التدفقات TFileStream
مثال لـ TTreeView:
PHP كود :
// Save

procedure TForm1.Button1Click(SenderTObject);
var
FTFileStream;
begin
:= TFileStream.Create('c:\TreeView.dat'fmCreate or fmShareCompat);
try
F.WriteComponent(TreeView1);
finally
F.Free;
end;
end;


// Load

procedure TForm1.Button2Click(SenderTObject);
var
FTFileStream;
begin
:= TFileStream.Create('c:\TreeView.dat'fmOpenRead or fmShareDenyWrite);
try
F.ReadComponent(TreeView1);
finally
F.Free;
end;
end

ويمكن حفظ جميع مكونات البرنامج بنفس الطريقة:
كود :
for i := 0 to ComponentCount - 1 do
...
[-] كل من 1 user says قال شكرا ل kachwahed على المشاركة المفيدة
  • Rever7eR
الرد
#4
1- MohFa: فيما يخص التحرير من الذاكر ة ، أنت محق أخي.
2- (TFileStream)__________ بوركت أخي
الرد
#5
يا اخوان مادا عن الحفظ في الرجستري
الرد
#6
السلام عليكم

هناك سؤال هو حفظ التغييرات التي أجريت على التطبيق فمثلا أنا غيرت لون الفورم الى أحمر مثلا و حفظ التطبيق أي عندما أفتح التطبيق مرة أخرى أجد لون الفورم أحمر هذا بعد الانتهاء من برمجة هذا التطبيق .
توضيح أكثر أي أنا عملت تطبيق وأعطيته الى أحد وأراد تغيير الفورم للون الأحمر مثلا بعد فتح التطبيق مرة أخرى .
الرد
#7
راجع : التعامل مع ملفات ini بالدلفي : حفظ الإعدادات بالملفات Ini
http://www.delphi4arab.net/forum/showthread.php?tid=875
الرد
#8
بارك الله فيك أخي الكريم nabilkeb

صالح من ورقلة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم