PDA

View Full Version : سوال: استفاده از Case برای مقادیر string



Mask
سه شنبه 09 فروردین 1390, 15:55 عصر
با سلام
چطوری میتونم از این دستور برای استرینگها استفاده کنم.
ممنون.

Felony
سه شنبه 09 فروردین 1390, 17:04 عصر
String ها داخل Case در دلفی پشتیبانی نمیشن ، قبلا هم بهتون گفته بودم که خودتون با راه های خلاقانه باید پیادش کنید ، مثلا :

http://www.swissdelphicenter.ch/torry/showcode.php?id=2330
http://delphi.about.com/cs/adptips2002/a/bltip0202_5.htm

Mask
سه شنبه 09 فروردین 1390, 17:06 عصر
ممنون.
میدونم حالت عادی نمیشه.
اما تو یه برنامه دیدم که این کار رو کرده بود.
فقط یه Type اون بالا گذاشته بود . و به راحتی با استرینگ کار میکرد.
ممنون.

M_Maskout
سه شنبه 09 فروردین 1390, 17:08 عصر
سلام
هیچ راهی برای استفاده از String تو ساختار case توی دلفی (و البته پاسکال) وجود نداره و فقط باید از if...else استفاده کنید.

AliReza Vafakhah
سه شنبه 09 فروردین 1390, 17:19 عصر
نمیشه چون دستور Case فقط از نوع عددی استفاده می کنه اما با کد نویسی یه جورایی میشه این کار رو انجام داد. (البته یادم هست که Andreas Hausladen (http://andy.jgknet.de/blog/) چنین قابلیتی را برای دلفی 2007 و نسخه های پایین تر ایجاد کرده بود)

http://delphi.about.com/cs/adptips2002/a/bltip0202_5.htm
http://www.swissdelphicenter.ch/torry/showcode.php?id=2330
http://www.delphi3000.com/articles/article_2168.asp?SK=

a_mosavian
سه شنبه 09 فروردین 1390, 17:59 عصر
وقتی نمی تونی یه مسئله را حل کنی زاویه دیدت را عوض کن! اونی که می گی از مقادیر enumerated بهره گرفته. استفاده از اسن نوع داده تنها برای case کار جالبی نیست. اما اگه از مقادیر enumerated استفاده های دیگری می کنی می تونی از کد زیر برای تبدیل مقادیر رشته ای به معادل enumerated بهره بگیری. تکرار می کنم این کار اگه تنها برای اینکار باشه بهینه نیست.

Mask
سه شنبه 09 فروردین 1390, 18:04 عصر
وقتی نمی تونی یه مسئله را حل کنی زاویه دیدت را عوض کن! اونی که می گی از مقادیر enumerated بهره گرفته. استفاده از اسن نوع داده تنها برای case کار جالبی نیست. اما اگه از مقادیر enumerated استفاده های دیگری می کنی می تونی از کد زیر برای تبدیل مقادیر رشته ای به معادل enumerated بهره بگیری. تکرار می کنم این کار اگه تنها برای اینکار باشه بهینه نیست.
ای که وگفتی یعنی چه؟

M_Maskout
سه شنبه 09 فروردین 1390, 18:07 عصر
این کار اگه تنها برای اینکار باشه بهینه نیست.
:بامزه::قهقهه:
کدی وجود نداره!:گیج:

a_mosavian
سه شنبه 09 فروردین 1390, 18:57 عصر
مسخره نکنید دوستان! یادم رفته خوب :بامزه:

uses TypInfo;
type
TEnumSample= (esHello, esDear, esFriend);
begin
case GetEnumValue(TypeInfo(TEnumSample), 'esDear') of
esHello: writeln('Hello');
esDear: writeln('Dear');
esFriend: writeln('Friend');
end;
end;

Felony
سه شنبه 09 فروردین 1390, 20:03 عصر
مسخره نکنید دوستان! یادم رفته خوب :بامزه:

uses TypInfo;
type
TEnumSample= (esHello, esDear, esFriend);
begin
case GetEnumValue(TypeInfo(TEnumSample), 'esDear') of
esHello: writeln('Hello');
esDear: writeln('Dear');
esFriend: writeln('Friend');
end;
end;

همونطور که گفته شد این کار جالبی نیست و باز هم در پیاده سازی Case دستتون بسته هست و دردسر ساز هم میشه ، مقاله ای تحت عنوان Enum ها در دلفی به سایت تحویل دادم تا تو شماره جدید مجله درج بشه که تو اون میتونید با کاربرد Enum ها آشنا بشید .