Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Case ... of <a>:<b>; end;   Найти похожие ветки 

 
Agent[007]   (2003-11-01 22:07) [0]

Почему, если писать вот это:
case (ChordAdd.Text) of
"A":
begin
Chords.Cells[XtoChange, 5]:="00";
Chords.Cells[XtoChange, 4]:="00";
Chords.Cells[XtoChange, 3]:="02";
Chords.Cells[XtoChange, 2]:="02";
Chords.Cells[XtoChange, 1]:="02";
Chords.Cells[XtoChange, 0]:="00";
end;
end;

То выдается сообщение об ошибке Ordinal type required... (ChordAdd - TComboBox)


 
Vuk   (2003-11-01 22:16) [1]

ChordAdd.Text[1]


 
DrPass   (2003-11-01 22:33) [2]

Потому что в инструкции case допускается использовать только переменные порядковых типов, к коим тип string не относится. А тип char - относится


 
Серый тушкан   (2003-11-01 23:13) [3]

A tak ne lutshe?

if ChordAdd.Text[1] = "A" then
with Chords do begin
Cells[XtoChange, 5]:="00";
Cells[XtoChange, 4]:="00";
Cells[XtoChange, 3]:="02";
Cells[XtoChange, 2]:="02";
Cells[XtoChange, 1]:="02";
Cells[XtoChange, 0]:="00";
end;


 
Agent[007]   (2003-11-02 08:38) [4]

Серый тушкан, у меня там около сотни будет...
PS: А PChar принимается, а то там надо будет всякие Asus5, Badd7 и т.д.


 
Agent[007]   (2003-11-02 08:40) [5]

Ну или ещё че-нить для передачи строк...


 
KSergey   (2003-11-02 08:47) [6]

Для строк ничего нет! Только if .. then .. else if...
В приницие эту конструкцию тоже можно красибо оформить и вполне читаемо.

PS
А если их там сотня - может как-то иначе организовать? Статическим массивом, например, задаваемым на этапе разработки, и в нем прописать значения, котороые куда-то там пихаться дубут? Приведите пару-тройку вариантов действий, которые происходитят при различных ChordAdd.Text - может что и подскажут.


 
Opuhshii   (2003-11-02 08:48) [7]

а что такое PChar?


 
Zacho   (2003-11-02 08:53) [8]

Например, такой вариант:
Заносишь свои строки в какой-нибудь потомок TStrings, и потом так :
case MyStrings.IndexOf(ChordAdd.Text) of
0: ...
1: ...
...
end;


 
Zacho   (2003-11-02 09:16) [9]

Кстати, можно и вообще без case.
Алгоритм примерно такой:
Создаешь два массива: массив строк (можно и TStrings использовать и метод TStrings.IndexOf) и массив значений, к-рые тебе надо заносить в Chords. Номер строки в массиве строк должен соответствовать номеру строки в массиве значений. Находишь в массиве строк строку, совпадающую с ChordAdd.Text и заносишь в Chords.Cells значения из массива значений.
Примерный код:
Пусть у нас уже есть готовые массивы MyStrings и MyValues, тогда:
var
i:integer;
begin
for i:=Low(MyStrings) to High(MyStrings) do
begin
if MyStings[i]=Trim(ChordAdd.Text) then
begin
Cells[XtoChange, 5]:=MyValues[i,5];
Cells[XtoChange, 4]:=MyValues[i,4];
Cells[XtoChange, 3]:=MyValues[i,3];
Cells[XtoChange, 2]:=MyValues[i,2];
Cells[XtoChange, 1]:=MyValues[i,1];
Cells[XtoChange, 0]:=MyValues[i,0];
break;
end;
end;
end;


 
Zacho   (2003-11-02 09:41) [10]

А можно и еще проще. Заполнить TStrings строками вида A=000202020000 и использовать TStrings.Values
Примерно так:
var
MyStrings:TStrings;
s:=string;
begin
MyStrings:=TStringList.Create;
MyStrings.Add("A=000202020000");
MyStrings.Add(..
...
s:=MyStrings.Values[ChordAdd.Text];
Cells[XtoChange, 0]:=copy(s,1,2);
Cells[XtoChange, 1]:=copy(s,3,2);
...


Что-то я разошелся :)
А вообще-то есть еще и другие варианты :-)


 
KSergey   (2003-11-02 09:43) [11]

[9] Zacho © (02.11.03 09:16)

Предлагаю не забегать вперед и сначала выслушать ответ автора на вопрос из [6] KSergey © (02.11.03 08:47) "Приведите пару-тройку вариантов действий, которые происходитят при различных ChordAdd.Text"

Ведь в вашем варианте предполагается, что всегда прописываются элементы с номерами 0..5
А может там еще какие-то вариаты бывают?

А так, если исходить из этого. то сделать, думаю, стоит несколько иначе: массив структур, что я и имел в виду, задавая уточняющий вопрос.


 
Agent[007]   (2003-11-02 10:07) [12]

Всем большое спасибо... THANKS



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
3-40926
Alex
2003-10-19 13:12
2003.11.13
Поиск повторяющихся записей


14-42130
Новичок
2003-10-22 13:35
2003.11.13
Как послать сообщение SMS c компьютера на сотку


1-41227
AndriyS
2003-11-01 14:15
2003.11.13
Помогите с StringGrid


8-41752
ianus
2003-06-18 18:51
2003.11.13
Tmediaplayer


1-41261
1234
2003-10-31 01:32
2003.11.13
Kak zastavit programmu otkrit htm file?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский