هل من الممكن أن تعلن عن مجموعة متنوعة من صفيف في كل من دلفي وحرية دون الحصول على ثوابت العناصر؟

StackOverflow https://stackoverflow.com/questions/749258

سؤال

منذ وقت طويل أتذكر أنني أستطيع القيام بذلك في توربو باسكال 7.

ربما أنا مخطئ وهو شيء أحتاج إلى توضيحه، لكن هل من الممكن إعلان مجموعة من السلاسل كمستمر؟

إن لم يكن ما هو الخيار / الحل البديل.

ما لدي الآن هو:

type
  TStates = (sOne, sTwo, sThree);
var
  TArrayOfString: array [sOne..sThree] of string = 
     ('State one', 'State two', 'State three');

ولكن أود أن استبدال هذا var مع const.

شكرا

تحرير 1.: أضيف بعض الكود الإضافي لتوضيح سؤالي.

هل كانت مفيدة؟

المحلول

مجرد استبدال فار مع مقدار ثابت قانونية تماما:

const
  TArrayOfString: array [1..3] of string =
     ('String one', 'String two', 'String three');

أنا فضولي لماذا يبدأ اسم المعرف الخاص بك ب ب على أية حال. هل تحاول تحديد نوع مثل هذا:

type
  TArrayOfString = array [1..3] of string;
const
  MyArrayOfString: TArrayOfString =
     ('String one', 'String two', 'String three');

لا يمكنك الحصول على صفيف طول متغير (AFAIK) كوسكس، ولا يمكنك الحصول عليه من نوع غير محدد.

هذا مع دلفي 2009. YMMV مع freepascal.

نصائح أخرى

في اليوم القديم باسكال / دلفي عندما كتبت:

const 
  A : Integer = 5;

لم تحدد ثابتا، ولكن متغير تهيئة.

يمكنك تحديد دون مشكلة:

const
  A : array [1..2] of string = ('a', 'b');

لكن السلاسل يجب أن تكون ثوابت أيضا. يحتاجون إلى أن تكون معروفة في تجميع الوقت.

الشيء نفسه ينطبق على:

var
  A : array [1..2] of string = ('a', 'b');

لذلك لا يمكنك الكتابة:

var
  B : string = 'hi';
  A : array [1..2] of string = (B, 'b');

لأن ب هو var. ولكن يمكنك الكتابة:

const
  B = 'hi'; // Even a typed constant does not work.

var
  A : array [1..2] of string = (B, 'b');

لاحظ أن الخيار: "الثوابت المكتوبة القابلة للتكافؤة" (يتم توفير خطأ افتراضي) لإنشاء الثوابت المكتوبة بالوقت القديم الذي يمكن تعيينه. إنه موجود فقط للتوافق مع الوراء، لأنك تريد أن تكون الثوابت الخاصة بك ثابتة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top