PDA

View Full Version : تابع گرفتن رشته



yashar666
چهارشنبه 25 مهر 1386, 09:35 صبح
با سلام
می خواستم بدونم چه تابعی هست که بتونه رشته رو بگیره منظورم اینه که مثل تابعی در زبان سی (getchar)که در یه حلقه میتونه کارکترها رو بپماید توجه کنید که من نمی خوام طول ای رشته رو بدست بیارم مثل lenght ممنونم

mzjahromi
چهارشنبه 25 مهر 1386, 09:39 صبح
اگر منظورت رو درست متوجه شده باشم
اینجا یه خورده فرق میکنه دوست عزیز و شما ابزارهای ویژوال برای ورود اطلاعات داری
میتونی از EditBox استفاده کنی
اگر منظورت چیز دیگه است سوالت رو واضح تر بپرس و بگو که چیکار میخوای بکنی

yashar666
چهارشنبه 25 مهر 1386, 09:47 صبح
میدونم فرض کنید من میخوام چیزی تو edit text بنویسم و بعد تعداد کرکترها نوشته شده رو بدونه تابع lenght با یه برنامه که مینویسم این کار رو بکنه

Saeid59_m
چهارشنبه 25 مهر 1386, 10:13 صبح
شاید منظورت پیماش حرف به حرف یک رشته است .
که اگه اینطوره به کد زیر نگاه کن


Var
S:String;
i:integer;
Begin
S:='AliReza';
for i:=1 to length (s) do showmessage (s[i]);
end;

manvaputra
چهارشنبه 25 مهر 1386, 10:31 صبح
دلیل خاصی هست که نمی خوای از تابع length استفاده کنی؟

yashar666
چهارشنبه 25 مهر 1386, 10:48 صبح
بله در واقع من طول کارکتر را نمی خوام پیمایش اون رو می خوامم چون بر روی هر کارکتر از aتا z می خوام کاری انجام بدم (مثلا حرف yashar در این کلمه 6 کارکتر هست که به فرض اگه y بود بنویس 2 اگه a بود بنویس 8 تا آخر )مثلا عدد 286536تولید بشه

manvaputra
چهارشنبه 25 مهر 1386, 11:12 صبح
خوب دوست عزیز دلیلی نداره از تابع length استفاده نکنی برات یه مثال گذاشتم:

yashar666
چهارشنبه 25 مهر 1386, 11:47 صبح
نه اینو نمیخوام
نکاه کن : مثال :
برنامه ای بنویسید که 28 حرف انگلیسی (a..z)را به صورت عدد معادل سازی کند مثلا a=1 b=2 تا z برابر 28 بعد اگر مثلا نوشتیم dbac برای ما چاپ کند 4213 منظورم رو فهمیدید

Rocker
چهارشنبه 25 مهر 1386, 12:10 عصر
بله در واقع من طول کارکتر را نمی خوام پیمایش اون رو می خوامم چون بر روی هر کارکتر از aتا z می خوام کاری انجام بدم (مثلا حرف yashar در این کلمه 6 کارکتر هست که به فرض اگه y بود بنویس 2 اگه a بود بنویس 8 تا آخر )مثلا عدد 286536تولید بشه
فکر کنم شما میخواهید الگوریتمی برای کد کردن رشته بنویسید؟
درست فهمیدم؟
خوب شما میتونید از همون روش آقای Saeid59_m (http://barnamenevis.org/forum/member.php?u=25604) استفاده کنید.

vcldeveloper
چهارشنبه 25 مهر 1386, 12:57 عصر
بله در واقع من طول کارکتر را نمی خوام پیمایش اون رو می خوامم چون بر روی هر کارکتر از aتا z می خوام کاری انجام بدم (مثلا حرف yashar در این کلمه 6 کارکتر هست که به فرض اگه y بود بنویس 2 اگه a بود بنویس 8 تا آخر )مثلا عدد 286536تولید بشه
در راهنمای دلفی توضیحات مربوط به Length را بخوانید تا متوجه بشید دقیقا به چه منظوری استفاده میشه، بعد از آن، کد موجود در پست شماره 4 را بخوانید تا متوجه بشید از Length برای چه منظوری استفاده شده.
وقتی خوب متوجه شدید، می تونید کد مربوطه را طوری تغییر بدید که نیاز شما را برآورده کند، مثلا:
var

S, OutStr : string;
i : integer;
begin
S := 'ABCD';
OutStr := '';
for i := 1 to length(s) do
case Ord(UpCase(S[i])) of
65 : OutStr := OutStr + '01'; {A}
66 : OutStr := OutStr + '02'; {B}
67 : OutStr := OutStr + '03'; {C}
68 : OutStr := OutStr + '04'; {D}
...
end;
end;

در ضمن، حل تمرینات دانشگاهی در این سایت ممنوع است!

yashar666
چهارشنبه 25 مهر 1386, 13:13 عصر
(این تمرین دانشگاهی اصلا نیست)در واقع جای اعداد فایلهای صوتی میاد وقتی برنامه خط رو می پیماید به هر کارکتری رسید آوای آن را پخش میکند

vcldeveloper
پنج شنبه 26 مهر 1386, 02:38 صبح
(این تمرین دانشگاهی اصلا نیست)در واقع جای اعداد فایلهای صوتی میاد وقتی برنامه خط رو می پیماید به هر کارکتری رسید آوای آن را پخش میکند
در هر حال جواب شما را در صفحه قبل دادم.

arshia_
شنبه 28 مهر 1386, 09:15 صبح
از رویداد فشردن دکمه با کمک دستور case می شه هر کاری رو روی کارکترها انجام داد
در مورد رشته هم دقیقا با آقای کشاورز و سایر دوستان موافقم
این روش بدون مشکل جواب می شه
اگر اعداد دقیقا طبق حروف الفبا استفاده می شه که می تونید با یه جمع و تفریق مقادیر رو حساب کنید...مثلا اگر a=1,b=2,c=3,d=4,.... کافی است مقدار کد اسکی اونها رو از عدد متناظر در بیارین تا مقدار دقیقا محاسبه بشه