الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

التعديل على ملف نصي

بدأه الاخير زمانه في 28 يونيو 2010 · 3 رد · 829 مشاهدة · في قسم Cross Platform GUI Libraries العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اريد التعديل على قيمة معينة موجودة في الملف limits.conf

هذا هو محتوى الملف

# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - an user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

# End of file

تحديدا اريد تغير القيمة الرقمية (20) الموجودة امام ال nproc الى رقم اخر

كيف اصل الى كلمة معينة في فايل من خلال ال qt لكي اعدل عليها.

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#2

وعليكم السلام ورحمة الله وبركاته

كيف الحال ..

راح تحتاج تقرأ الملف بالكامل ثم تسوي بعض العمليات بال regular expression ثم تعيد كتابة البينات في الملف بالكامل

ولقد فعلتها بالفعل وفقا لطريقة صياغة الملف الا موجود في مشاركتك

void setValue (QString f,QString domain,QString type,QString item,QString value)
{
    QFile file(f);
    file.open(QIODevice::ReadOnly);
    QString data=file.readAll();//قرأت الملف بالكامل
    file.close();
    QRegExp reg(domain+QString("\\s*")+type+QString("\\s*")+item+QString("\\s*")+QString("\\d+"));//يبحث عن نص وفق تستلسل منطقي
    reg.indexIn(data);//بدأ البحث
    QString str=reg.capturedTexts().at(0);//حصلنا على النص المتشابه
    QString str1=str;//نخزن النص في متغير آخر لاجراء بعض العمليات
    str1.replace(QRegExp("\\d+"),value);//نستبدل القيمة الحالية بالقيمة الجديدة
    data.replace(str,str1);//نستبدل السطر الجديد بالسطر القديم في الملف
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    file.write(data.toUtf8 ());//اعدنا كتابة النص في الملف
    file.close();
}

التجربة

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    setValue("c:/try/limits.conf","\\*","soft","core","77");
    qDebug()<<"the end";
    return a.exec();
}

وتغيرت القيمة للتي اريدها انظر الصورة في المرفقات

أي استفسار تجدني في الخدمة .

post-164107-065698100 1277744661_thumb.j

المرفقات
Capture.JPG

بسم الله الرحمن الرحيم

مدونة دوال

كيوتي العربي

#3

اهلا اخي محمد ، كيف حالك؟

اشكرك على سرعة الاجابة ،،

كالعادة انت مرجعنا في ال QT :happy:

وفقك الله.

سأطلع على الكود ولي عودة ان شاء الله.

جزاك الله خيرا

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#4

جزاك الله خيرا اخي محمد ، الكود يفي بالغرض رغم انه غريب علي ، فلم اتعامل مسبقا مع ال RegEx

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

مواضيع مشابهة