Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
1-41158
ss300
2003-11-03 06:02
2003.11.13
CopyFile


14-41967
Думкин
2003-10-10 05:09
2003.11.13
С днем рождения! 10 октября.


14-42118
Andryk
2003-10-22 20:04
2003.11.13
Просто прикол :о)))


1-41364
Илья
2003-10-30 16:31
2003.11.13
Файлы ресурсов


14-42000
otido
2003-10-15 19:25
2003.11.13
Банальный вопрос Где скачать? (МЭМ, MultiMESE)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский