سلاسل في دلفي
—— Excerpt من الإنترنت
1: سلاسل مختلفة
الأوتار هي أكثر أنواع البيانات فائدة في كائن كائن. العديد من الوظائف تمرر الحجج مع السلاسل. نظرًا لوجود طرق مختلفة لتحديد واستخدام السلاسل في دلفي ، بما في ذلك السلاسل النموذجية (السلاسل) في باسكال ، والأوتار الطويلة التي تدعمها دلفي (Ansistrings) ، ومصفوفات شخصية تشبه لغة C (Arrayofchar) ، والإشارة إلى مؤشر الشخصيات (PCHAR) ، إلخ. ستتحدث المقالة التالية عن الاختلافات والاحتياطات في هذه الأنواع في التعريف والتطبيق.
1. سلاسل باسكال التقليدية
في Pascal ، السلسلة النموذجية هي سلسلة من أحرف طول معين. كل سلسلة تحتوي على طول مجموعة (الافتراضي هو 255) ، والما يلي مثال:
var
العنوان: سلسلة ؛
الكود: سلسلة [50] ؛
العنوان عبارة عن سلسلة بطول 255 ، والحد الأقصى لطول الكود هو 50.
لا يمكن أن يتجاوز طول سلسلة باسكال التقليدية 255.
يمكنك استخدام عملية تسلسل السلسلة "+" لتسلسل السلاسل معًا:
النتيجة: = String1+String2 ؛
2. سلاسل طويلة في دلفي
بالإضافة إلى دعم السلاسل القصيرة التقليدية في Pascal ، تدعم Delphi أيضًا سلاسل طويلة. تسمى الشخصيات الطويلة Ansistring. تخصيص الأوتار الطويلة بشكل ديناميكي الذاكرة ، أي أن الذاكرة المطلوبة للسلاسل يتم تخصيصها فقط عند استخدام الأوتار ، وبالتالي فإن طولها غير محدود. في Delphi ، إذا كنت تستخدم String1: String as type description ، فقد تكون String1 إما سلسلة قصيرة أو سلسلة طويلة ، اعتمادًا على إعدادات مفتاح $ H في المترجم. القيمة الافتراضية هي $ H+، والتي تمثل سلسلة ANSI طويلة. تنتهي الأوتار الطويلة مع NULL ، مما يعني أن السلاسل الطويلة متوافقة تمامًا مع الأوتار الخالية من النهاية بلغة C.
يمكن ضبط الحد الأقصى لطول السلسلة من خلال وظيفة SetLength:
setLength (String1،100) ؛
3. صفيف الأحرف المشابهة لـ C.
يمكن استخدام صفيف يبدأ بـ 0 لتخزين السلاسل التي تنتهي مع NULL. التعريف التالي:
var
الاسم: صفيف [0..50] Ofchar ؛
4. مؤشر PCHAR
إذا تم تعيين exenderSyntax في Delphi (افتراضي) ، فإن صفيف الأحرف الذي يبدأ بـ 0 متوافق تمامًا مع مؤشر PCHAR يشير إلى الحرف ، لأن اسم صفيف الأحرف الذي يبدأ بـ 0 هو المؤشر الذي يشير إلى الحرف الأول لمصفوفة الأحرف . يمكنك دفع السلسلة مباشرة إلى مؤشر PCAR. على سبيل المثال:
var
P: PCHAR ؛
يبدأ
P: = 'HelloWorld' ؛
نهاية؛
وبهذه الطريقة ، يشير P إلى قطعة من الذاكرة تخزن السلسلة "HelloWorld" وتنتهي مع NULL.
تتطلب العديد من وظائف واجهة برنامج تطبيقات تطبيقات Windows نوع PCAR كمعلمة. عند استخدام مؤشر PCAR ، يستخدم أولاً وظيفة GetMem (varp: المؤشر ؛ الحجم: عدد صحيح) لتخصيص الذاكرة في نهاية البرنامج. الافراج عن الذاكرة. على سبيل المثال:
Varwindir ، Sysdir: Pchar ؛
يبدأ
GetMem (Windir ، 256) ؛ {تخصيص الذاكرة للأؤوسية}
GetWindowsDirectory (Windir ، 128) ؛ {ضع دليل تثبيت Windows إلى Windir}
ShowMessage ('WindowsDirectoryis'+Windir) ؛ {show result}
نهاية؛
الثاني: تحويل السلسلة
يقدم أعلاه تعريف واستخدام أربعة أنواع من الأوتار في دلفي. نظرًا لأن الوظائف المختلفة لها متطلبات مختلفة لأنواع معلمات السلسلة ، يلزم تحويل نوع السلسلة.
1. يمكنك استخدام Strpas لتحويل سلسلة تنتهي مع Null إلى سلسلة Pascal قصيرة. strpcopy يكمل التحويل المعاكس.
2. نظرًا لأن السلاسل الطويلة تنتهي بـ NULL ، يمكنك تحويل السلاسل الطويلة إلى نوع PCHAR باستخدام الممثلين. الاستخدام هو: pchar (s) ، s هي سلسلة طويلة. يقوم Casting بإرجاع مؤشر إلى الحرف الأول من السلسلة الطويلة ، وتنتهي السلسلة المدببة مع NULL. على سبيل المثال:
var
التسمية التوضيحية ، الرسالة: سلسلة ؛
التسمية التوضيحية: = 'HelloWorld!' ؛
mssage: = 'thisisatestoflongstring' ؛
MessageBox (0 ، PCHAR (Message) ، PCHAR (Caption) ، MB_OK) ؛
ملخص: عند استخدام الأوتار في دلفي ، يجب أن تكون دائمًا واضحًا بشأن نوع السلسلة لتجنب الارتباك. عند فهم السلاسل ، يجب أن تربط السلاسل مع المؤشرات وتخصيصات الذاكرة لتعزيز الفهم.