delphi4arab منتديات دلفي للعرب
جعل السترينغ يقبل اكثر من 255 حرف - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : جعل السترينغ يقبل اكثر من 255 حرف (/showthread.php?tid=8397)



جعل السترينغ يقبل اكثر من 255 حرف - mohamed49 - 14-02-2017

السلام عليكم
عندي مشكلة عند ارسال نصوص تفوق 255 حرف لا يعمل البرنامج عدلت الكود الى هكذا لكن لم يعد يعمل جيدا فكيف يمكنني جعل السترينغ يقبل اكثر من 255 بدون عمل midstr للتكست الموجود في memo1
type
  TSettings = record
    mystring:array [1..900] of string;

هذه هي الوحدة المستعملة

unit shared;
interface
uses
Windows;
type
TSettings = record
msgConfusedtring[255];
end;
PSettings = ^TSettings;
const
RC_SETTINGS = 'CFG';
function WriteSettings(Filename: PChar; Settings: PSettings): Boolean;
function ReadSettings(var Settings: PSettings): Boolean;
implementation
function WriteSettings(Filename: PChar; Settings: PSettings): Boolean;
var
hResource: Thandle;
begin
Result := False;
hResource := BeginUpdateResource(Filename, False);
if hResource <> 0 then
begin
if UpdateResource(hResource, RT_RCDATA, RC_SETTINGS, 0, Settings, SizeOf(Settings^)) then
Result := True;
EndUpdateResource(hResource, False);
end;
end;
function ReadSettings(var Settings: PSettings): Boolean;
var
hResInfo: HRSRC;
hRes: HGLOBAL;
begin
Result := False;
hResInfo := FindResource(hInstance, RC_SETTINGS, RT_RCDATA);
if hResInfo <> 0 then
begin
hRes := LoadResource(hInstance, hResInfo);
if hRes <> 0 then
begin
Settings := LockResource(hRes);
Result := True;
end;
end;
end;
end.


RE: جعل السترينغ يقبل اكثر من 255 حرف - Agmcz - 16-02-2017

وعليكم السلام
كود :
unit shared; interface uses  Windows; type  TSettings = record    Msg: string;  end;  PSettings = ^TSettings; const  RC_SETTINGS = 'CFG'; function WriteSettings(Filename: PChar; Settings: PSettings): Boolean; function ReadSettings(var Settings: PSettings): Boolean; implementation function WriteSettings(Filename: PChar; Settings: PSettings): Boolean; var  hResource: Thandle; begin  Result := False;  hResource := BeginUpdateResource(Filename, False);  if hResource <> 0 then  begin    if UpdateResource(hResource, RT_RCDATA, RC_SETTINGS, 0, @Settings.Msg[1],      PDWORD(DWORD(Settings.Msg) - 4)^ + 1) then      Result := True;    EndUpdateResource(hResource, False);  end; end; function ReadSettings(var Settings: PSettings): Boolean; var  hResInfo: HRSRC;  hRes: HGLOBAL; begin  Result := False;  hResInfo := FindResource(hInstance, RC_SETTINGS, RT_RCDATA);  if hResInfo <> 0 then  begin    hRes := LoadResource(hInstance, hResInfo);    if hRes <> 0 then    begin      New(Settings);      Settings^.Msg := PChar(LockResource(hRes));      Result := True;    end;  end; end; end.



RE: جعل السترينغ يقبل اكثر من 255 حرف - mohamed49 - 17-02-2017

(16-02-2017, 09:39 PM)Agmcz كتب : وعليكم السلام
كود :
unit shared; interface uses  Windows; type  TSettings = record    Msg: string;  end;  PSettings = ^TSettings; const  RC_SETTINGS = 'CFG'; function WriteSettings(Filename: PChar; Settings: PSettings): Boolean; function ReadSettings(var Settings: PSettings): Boolean; implementation function WriteSettings(Filename: PChar; Settings: PSettings): Boolean; var  hResource: Thandle; begin  Result := False;  hResource := BeginUpdateResource(Filename, False);  if hResource <> 0 then  begin    if UpdateResource(hResource, RT_RCDATA, RC_SETTINGS, 0, @Settings.Msg[1],      PDWORD(DWORD(Settings.Msg) - 4)^ + 1) then      Result := True;    EndUpdateResource(hResource, False);  end; end; function ReadSettings(var Settings: PSettings): Boolean; var  hResInfo: HRSRC;  hRes: HGLOBAL; begin  Result := False;  hResInfo := FindResource(hInstance, RC_SETTINGS, RT_RCDATA);  if hResInfo <> 0 then  begin    hRes := LoadResource(hInstance, hResInfo);    if hRes <> 0 then    begin      New(Settings);      Settings^.Msg := PChar(LockResource(hRes));      Result := True;    end;  end; end; end.

شكرا اخي على ردك التصحيح يعمل جيدا لكن اذا كان النص كبير جدا يظهر ربعه تقريبا حوالي 20 سطر  ثانيا لو اردت ارسال بيانات متفرقة هل يكفي اضافتها هكذا ام يجب التعديل على الكود ككل
type
 TSettings = record
   Msg: string;
   Msg1: string;
   Msg2: string;
   Msg3: string;
 end;


RE: جعل السترينغ يقبل اكثر من 255 حرف - Agmcz - 17-02-2017

ارفق النص الذي يظهر ربعه هنا...
إقتباس :لو اردت ارسال بيانات متفرقة
نعم يجب تعديل الكود في حالة تغيير record


RE: جعل السترينغ يقبل اكثر من 255 حرف - mohamed49 - 17-02-2017

(17-02-2017, 12:35 PM)Agmcz كتب : ارفق النص الذي يظهر ربعه هنا...
إقتباس :لو اردت ارسال بيانات متفرقة
نعم يجب تعديل الكود في حالة تغيير record

اي نص يكون طويل مثلا هذا  كما انه يظهر رموز في بعض الحروف ربما يجب اضافة ترميز utf8

هذا النص
De nombreux agriculteurs européens sont des viticulteurs (400 000 ha consacrés à la vigne en Algérie) dont les productions sont exportées surtout vers la France métropolitaine qui l'achète assez cher (selon l'historien Daniel Lefeuvre) pour maintenir le niveau de vie des colons. L'agriculture n'occupe que 9 % de la population active française (contre 26 % en métropole) mais les paysans d'origine française occupent l'essentiel des meilleures terres cultivables.[citation nécessaire] Cependant certaines sources certifient que ne sont attribuées aux colons que des terres alors en friche14[réf. à confirmer]. Le colon en réclame autant qu'il pense pouvoir en cultiver avec sa famille, mais doit dès la deuxième année acquitter l'impôt foncier proportionnel à la surface, ce qui dissuade les abus.

L'essentiel de la population musulmane est pauvre. Ce sont essentiellement de petits propriétaires terriens vivant sur les terres les moins fertiles, ou des journaliers. Dans les années 1950, les surfaces cultivables stagneraient autour de 7 millions d'ha La production agricole augmente peu entre 1871 et 1948, contrairement au nombre d'habitants. Selon Daniel Lefeuvre, la production annuelle de céréales passe de 3,88 quintaux/hab. à 2 q/hab. L'Algérie doit donc importer des produits alimentaires.

Le chômage est important, 1,5 millions de personnes sans emplois en 1955. La commune d'Alger aurait compté 120 bidonvilles avec 70 000 habitants en 1953.

Si la population musulmane est majoritairement pauvre, Daniel Lefeuvre rapporte qu'environ 600 000 Algériens musulmans « appartiennent aux groupes sociaux les plus favorisés » (grands propriétaires fonciers, professions libérales, membres de l'armée et de la fonction publique)15.

D'une manière générale, l'Algérie loin de présenter une source économique avantageuse est un lourd fardeau pour la métropole et ses contribuables16.

Après la fin de la Seconde Guerre mondiale, le plan Marshall prévoit une aide économique à la France et l'Algérie.
Commentaires sur des images d'illustration à propos des prises de position des différents partis, les communistes demandant la création d'une commission d'enquête, les socialistes étant plus prudents, toute la classe politique rejetant l'idéee d'une repentance. Itw de François ASENSI député PC de Seine-Saint-Denis et de Hervé de CHARETTE député UDF


RE: جعل السترينغ يقبل اكثر من 255 حرف - mohamed49 - 17-02-2017

حجم النص هذا هو 2403 وعند كتابته على الملف التنفيذي يكون حجم الناتج 1205 وعند اعادة كتابة هذه الاسطر فقط


De nombreux agriculteurs européens

تظهر عند الحفظ غير كاملة

De nombreux agricu


ربما المشكلة في هذا السطر

PDWORD(DWORD(Settings.Msg) - 4)^ + 1)

تمام حليت المشكلة الاولى بقي كيفية اضافة عدة متغيرات كاليوزر والباس مثلا


RE: جعل السترينغ يقبل اكثر من 255 حرف - Agmcz - 17-02-2017

[صورة: attachment.php?aid=3433]
لا أعرف المشكل الذي تتكلم عنه يمكنك إرفاق محاولتك
مرفق مثال للتوضيح.


RE: جعل السترينغ يقبل اكثر من 255 حرف - mohamed49 - 18-02-2017

تمام اخي كانت المشكلة من عندي حيث استخدمت دلفي 7 مع 10 لكن بعد استخدام نفس الاصدار انحلت المشكلة يعطيك العافية اخي بقي كيفية التعديل لاضافة اكثر من متغير مثلا اليوزر والباس والبلد بارك الله فيك


RE: جعل السترينغ يقبل اكثر من 255 حرف - Agmcz - 19-02-2017

هل تريد تريد كتابة هذا recod
type
TSettings = record
Msg: string;
Msg1: string;
Msg2: string;
Msg3: string;
end;
بسبب String
يجب تأشير على عنوان بداية كل سلسلة
ويجب جمعها بترتيب للكتابة مباشرة
يمكن كتابة record بهذا الشكل
type
TSettings = record
Msg: array of string;
end;
؟


RE: جعل السترينغ يقبل اكثر من 255 حرف - mohamed49 - 21-02-2017

(19-02-2017, 10:55 PM)Agmcz كتب : هل تريد تريد كتابة هذا recod
type
TSettings = record
  Msg: string;
  Msg1: string;
  Msg2: string;
  Msg3: string;
end;
بسبب String
يجب تأشير على عنوان بداية كل سلسلة
ويجب جمعها بترتيب للكتابة مباشرة
يمكن كتابة record بهذا الشكل
type
TSettings = record
  Msg: array of string;
end;
؟

تمام اخي الله يحفظك سؤال خارج نوعا ما عن هذا الموضوع اذا امكن اخي

اريد مثال لتشغيل سترينغ عن طريق رانبي او ماشابه يعمل على دلفي 2010 اذا ما في ازعاج