PDA

View Full Version : تبديل كد



mostafaserial
شنبه 10 مرداد 1388, 18:54 عصر
با سلام
كسي ميتونه اين كد رو براي من تبديل كنه به زبون پاسكال تا بتونم ازش توي دلفي استفاده كنم


Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a, n, m,s As Integer
Dim digit(9) As Integer
s = Int(TextBox1.Text)
m = 9
While (s > 0)
n = s Mod 10
digit(m) = n
m = m - 1
s = s / 10
End While
For n = 0 To 9
a = digit(n)
Select Case (a)
Case 0
نام فایل صوتی 0
Case 1
نام فایل صوتی 1
Case 2
نام فایل صوتی 2
Case 3
نام فایل صوتی 3
Case 4
نام فایل صوتی 4
Case 5
نام فایل صوتی 5
Case 6
نام فایل صوتی 6
Case 7
نام فایل صوتی 7
Case 8
نام فایل صوتی 8
Case 9
نام فایل صوتی 9
End Select
Next
End Sub
End Class

من ميخوام يه عدد مثلا 85858رو از طريق تكست بكس بگيرم بعد اون عدد رو تفكيك كنم
تا فايل رو تك تك با دستور
KDVoice1.Play( KDPhone1.WavePlayID,'5.wav',0,-1 );
برام بخونه
واضحتر بگم مثل تلفن گويا كه اعدادرو تك تك ميخونه اين دستور براي پخش فايل صوتي
از طريق خط تلفنه
يك عدد از ورودي خونده ميشه بعد به صورت تك تك پخش ميشه
ممنون از كمكتون

جواد ملاولی
شنبه 10 مرداد 1388, 20:19 عصر
سلام دوست عزیز. بفرما:

procedure TForm1.btn1Click(Sender: TObject);
var
a, n, m, s : Integer;
digit : array [0..9] of Integer;
begin
s := StrToInt(edt1.Text);
m := 9;
while s > 0 do
begin
n := s mod 10;
digit[m] := n;
m := m - 1;
s := s div 10;
end;
for n := 0 to 9 do
begin
a := digit[n];
case a of
0 :
1 :
2 :
3 :
4 :
5 :
6 :
7 :
8 :
9 :
end;
end;
end;چند نکته:
- این کد رو در رویداد OnClick یک شیء Button به نام btn1 نوشتم.
- شیء Textbox شما در این کد edt1 است.
- من فقط کد رو خط به خط تبدیل کردم و بهینه سازی و تست نکردم.

موفق باشید.

mostafaserial
یک شنبه 11 مرداد 1388, 12:13 عصر
سلام
ممنون از كمكت
اين كد تا يه جاهايي درسته ولي وقتي به كد هاي 3 و 2 ميرسه قاطي ميكنه
و بعد از كليك 3و 2 رو تكرار ميكنه بعد عدد داخل تكس باكس رو نشون ميده

منظور :3و:2

سورس رو ضميمه كردم ببينيد مشكلش چيه

Felony
یک شنبه 11 مرداد 1388, 12:29 عصر
چرا اینجوری ؟ شما راحت با یه حلقه میتونید این کار رو انجام بدید .


var
Num:char;
i:integer;
begin
for i:=0 to Length(Edit1.Text) do begin
Num:=Edit1.Text[i];
case Num of
'0':ShowMessage('0');
'1':ShowMessage('1');
'2':ShowMessage('2');
'3':ShowMessage('3');
'4':ShowMessage('4');
'5':ShowMessage('5');
'6':ShowMessage('6');
'7':ShowMessage('7');
'8':ShowMessage('8');
'9':ShowMessage('9');
end;
end;
end;

mostafaserial
دوشنبه 12 مرداد 1388, 18:13 عصر
چرا اینجوری ؟ شما راحت با یه حلقه میتونید این کار رو انجام بدید .


var
Num:char;
i:integer;
begin
for i:=0 to Length(Edit1.Text) do begin
Num:=Edit1.Text[i];
case Num of
'0':ShowMessage('0');
'1':ShowMessage('1');
'2':ShowMessage('2');
'3':ShowMessage('3');
'4':ShowMessage('4');
'5':ShowMessage('5');
'6':ShowMessage('6');
'7':ShowMessage('7');
'8':ShowMessage('8');
'9':ShowMessage('9');
end;
end;
end;
سلام دوباره
يه مشكل دارم
براي مثال وقتي من عدد 123 رو ميزنم دقيقا همون پيام 1 بعد 2 بعد 3 رو ميده
من ميخوام بين پيام ها چند ثانيه تاخير باشه مثلا 1 بعد 2 ثانيه تاخير بعد 2 بعد 2 ثانيه تاخير و ..
چون من بجاي پيام بايد يه فايل wav رو پخش كنم و چون اجرا خيلي سريعه فايل رو تو هم و قاطي پخش ميكنه بايد چيكار كنم از حلقه استفاده كنم يا تايمر و چجوي؟:گریه::گریه:

ممنون ميشم اگه كمكم كنيد.

جواد ملاولی
دوشنبه 12 مرداد 1388, 19:33 عصر
سلام دوباره
يه مشكل دارم
براي مثال وقتي من عدد 123 رو ميزنم دقيقا همون پيام 1 بعد 2 بعد 3 رو ميده
من ميخوام بين پيام ها چند ثانيه تاخير باشه مثلا 1 بعد 2 ثانيه تاخير بعد 2 بعد 2 ثانيه تاخير و ..
چون من بجاي پيام بايد يه فايل wav رو پخش كنم و چون اجرا خيلي سريعه فايل رو تو هم و قاطي پخش ميكنه بايد چيكار كنم از حلقه استفاده كنم يا تايمر و چجوي؟:گریه::گریه:

ممنون ميشم اگه كمكم كنيد.

سلام. در حلقه ی FOR از دستور Sleep استفاده کن.
مثلاً

Sleep (2000)این دستور باعث میشه که حلقه بعد از هر بار اجرا، 2 ثانیه صبر کنه و دوباره ادامه بده.