Консультация № 66363
10.12.2006, 16:51
0.00 руб.
0 4 4
Уважаемые эксперты, помогите пожалуйста разобраться с двумя вопросами:
1)Есть у меня массив A[1..n] (конец массива n - переменная), но Делфи так компилировать не хотит, выдает - constant expression expected. Как мне сделать так чтобы в программе можно было вводить размерность массива?
2)У какого компонента типа memo или listbox‘a можно таким кодом как в приложении выводить строки разных цветов, а то в вышеуказаных компонентах от таких инструкций изменяется цвет всего текста. Или можно ли как-нибудь в эти компоненты выводить разноцветный текст?

Приложение:
log.Font.Color := clBlack;log.Items.add(‘текст‘);log.Font.Color := clMaroon;log.Items.add(‘текст‘);log.Font.Color := clGreen;log.Items.add(‘текст‘);

Обсуждение

Неизвестный
10.12.2006, 22:17
общий
это ответ
Здравствуйте, Lexx_2k6!
Отвечаю на первый вопрос. Чтобы создать массив переменной длины надо использовать динамический массив, а потом уже в программе указывать его длину с помощью процедуры SetLength. Пример описания динамического массива и процедуры SetLength приведён в приложении.

Приложение:
Var a: array of Integer;begin SetLength(a,100); {Создания массива, где первый параметр переменная массива, а второй его длинна} A := NIL; {Освобождение памяти занятой массивом}End;
Неизвестный
11.12.2006, 08:09
общий
это ответ
Здравствуйте, Lexx_2k6!
На второй вопрос отвечаю:
TStringGrid и его событие OnDrawCell, где можно раскрашивать каждую строку любым цветом, в зависимости от содержимого, номера строки и т.д.
Неизвестный
11.12.2006, 21:52
общий
это ответ
Здравствуйте, Lexx_2k6!

Вот пример объявления массива,надеюсь,понятно.

Type

mas=array [1..n] of Integer; //Объявляем массив

var
Form1: TForm1;
a:mas; //Определяем переменную для данных массива
n:Integer; //Вводим переменную для количества строк
implementation

{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var i:Integer; //Индекс элемента
begin
Memo2.Clear; //Очищаем окно
n:=Memo1.Lines.Count; //Определяем количество заполненных //строк
for i:=1 to n do
begin
a[i]:=StrToInt(Memo1.Lines[i-1]); //Заполняем массив
end;
end;

Массив заполнен,а дальше делайте с ним,что надо.

Что касается цвета,воспользуйтесь тем же массивом,присваивая каждой строке свой цвет.

Удачи!
Неизвестный
12.12.2006, 12:23
общий
это ответ
Здравствуйте, Lexx_2k6!
Посмотрите вот этот компонент:
http://decoding.narod.ru/download/component/memo/fatpak.zip
Форма ответа