Yuri_R |
Отправлено: 20.01.2007, 22:48 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Можно ли занести в список ComboBox массив строк одним оператором присваивания?
[CОDE]
AnsiString mm[] = {"aaaa", "bbbb", "cccc"};
ComboBox1->Items->Text =*mm;
[/CОDE]
Заносится только 0-й элемент "aaaa".
Отредактировано Yuri_R — 30.01.2007, 21:35 |
|
Yuri_R |
Отправлено: 23.01.2007, 13:52 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Или, например, так:
AnsiString mm[] = {"aaaa", "bbbb", "cccc"};
ComboBox1->Items->Add(*mm);
|
|
Romikgy |
Отправлено: 24.01.2007, 20:19 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 72
|
CODE |
AnsiString mm[] = {"aaaa", "bbbb", "cccc"};
for (int i=0; i<3; i++)
ComboBox1->Items->Add(mm[i]);
|
Отредактировано Romikgy — 24.01.2007, 19:20 |
|
Yuri_R |
Отправлено: 24.01.2007, 21:24 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Да нет. Поэлементное занесение — это понятно.
Но ведь Items, это список. По сути дела массив.
Неужели в C++ нельзя значение одного массива присвоить другому без формирования подобных циклов? |
|
AVC |
Отправлено: 25.01.2007, 10:03 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE (Yuri_R @ 24.01.2007, 20:24) | Неужели в C++ нельзя значение одного массива присвоить другому без формирования подобных циклов? |
Должен вас огорчить — по большому счету нет.
|
|
Yuri_R |
Отправлено: 25.01.2007, 13:02 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
Даже, если предварительно сформировать пустые строки списка — заносится только 0-й элемент.
AnsiString mm[] = {"aaaa", "bbbb", "cccc"};
ComboBox1->Items->DelimitedText = ",,";
ComboBox1->Items->Add(*mm);
Но огорчаться не будем — есть много других способов. |
|
nawok78 |
Отправлено: 30.01.2007, 16:52 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 115
|
CODE |
ComboBox1->AddStrings(TStrings Strings);
|
А уж TStrings вполне подойдет вместо массива. |
|
Yuri_R |
Отправлено: 30.01.2007, 21:06 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 5
|
QUOTE (nawok78 @ 30.01.2007, 16:52) | CODE |
ComboBox1->AddStrings(TStrings Strings);
|
А уж TStrings вполне подойдет вместо массива. |
У меня получилась такая конструкция:
CODE |
TStrings *Strings= new TStringList();
Strings->DelimitedText=",,";
Strings->Strings[0]="aaa0";
Strings->Strings[1]="aaa1";
Strings->Strings[2]="aaa2";
ComboBox1->Items->AddStrings(Strings);
|
Но это примерно то же самое, что и:
CODE |
ComboBox1->Items->DelimitedText=",,";
ComboBox1->Items->Strings[0]="aaa0";
ComboBox1->Items->Strings[1]="aaa1";
ComboBox1->Items->Strings[2]="aaa2";
| |
|
nawok78 |
Отправлено: 31.01.2007, 08:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 115
|
В принципе тоже но речь не об этом
естественно, что когда-то этот массив нужно инициировать.
Нафига его вобще создавать, еслт ты один раз его используешь?
Речь о том что если он многократно используется, то большинство компонентов используют TStrings и передавать этот список от одного к другому проще в виде TStrings
QUOTE |
Даже, если предварительно сформировать пустые строки списка — заносится только 0-й элемент.
AnsiString mm[] = {"aaaa", "bbbb", "cccc"};
ComboBox1->Items->DelimitedText = ",,";
ComboBox1->Items->Add(*mm);
|
AnsiString mm[] — это тоже самое что и AnsiString *mm; — указатель на первый элемент массива, следовательно *mm — имеет тип AnsiString и есть mm[0]. |
|