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

tring[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.
(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;
ارفق النص الذي يظهر ربعه هنا...
إقتباس :لو اردت ارسال بيانات متفرقة
نعم يجب تعديل الكود في حالة تغيير record
(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
حجم النص هذا هو 2403 وعند كتابته على الملف التنفيذي يكون حجم الناتج 1205 وعند اعادة كتابة هذه الاسطر فقط
De nombreux agriculteurs européens
تظهر عند الحفظ غير كاملة
De nombreux agricu
ربما المشكلة في هذا السطر
PDWORD(DWORD(Settings.Msg) - 4)^ + 1)
تمام حليت المشكلة الاولى بقي كيفية اضافة عدة متغيرات كاليوزر والباس مثلا
![[صورة: attachment.php?aid=3433]](http://delphi4arab.net/forum/attachment.php?aid=3433)
لا أعرف المشكل الذي تتكلم عنه يمكنك إرفاق محاولتك
مرفق مثال للتوضيح.
تمام اخي كانت المشكلة من عندي حيث استخدمت دلفي 7 مع 10 لكن بعد استخدام نفس الاصدار انحلت المشكلة يعطيك العافية اخي بقي كيفية التعديل لاضافة اكثر من متغير مثلا اليوزر والباس والبلد بارك الله فيك
هل تريد تريد كتابة هذا recod
type
TSettings = record
Msg: string;
Msg1: string;
Msg2: string;
Msg3: string;
end;
بسبب String
يجب تأشير على عنوان بداية كل سلسلة
ويجب جمعها بترتيب للكتابة مباشرة
يمكن كتابة record بهذا الشكل
type
TSettings = record
Msg: array of string;
end;
؟
(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 اذا ما في ازعاج