Окно вывода в LAZARUS

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Окно вывода в LAZARUS

Сообщение AlexGordon »

Здравствуйте. У меня возник следующий вопрос.
Вот к примеру, когда в лазарусе идет компиляция проекта, то в окне вывода пишутся все сообщения компилятора.
Вот я написал, допустим, свою среду, которая использует консольный компилятор. Как сделать так, чтобы все сообщения из консольной программы так же направлялись в окно вывода? То есть какую форму надо создать, какие объекты разместить, какие свойства прописать? Если кто-нибудь с этим работал, то помогите пожалуйста. Заранее спасибо.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

TAsincProcess
Смотри его.
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

А вы не могли бы подсказать, какая команда за что там отвечает?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

http://wiki.lazarus.freepascal.org/Exec ... 0.B5.D1.80

Это для простого TProcess, для TAsyncProcess, возможно, придётся адаптировать.
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

Odyssey, спасибо вам огромное!
Но у меня еще один вопрос. У меня есть объект SynMemo, и при загрузке в него текста из файла с русским текстом русский текст не отображается. Как это поправить, не пересохраняя текстовый файл?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

А в какой кодировке текстовый файл?
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

1251 ANSI Кириллица
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

С SynMemo не работал, но подозреваю, что ему требуется utf-8. Можно перед записью в SynMemo прочитать файл в буферную строку или StringList и перекодировать, используя модуль LConvEncoding, функцию CP1251ToUTF8.
AlexGordon
новенький
Сообщения: 28
Зарегистрирован: 07.12.2010 20:02:15

Сообщение AlexGordon »

А можно чуть-чуть поподробнее?
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

Odyssey писал(а):С SynMemo не работал, но подозреваю...

Аналогично
AlexGordon писал(а):А можно чуть-чуть поподробнее?

Код: Выделить всё

var List: tStringList
i: integer;
...
List.loadfromfile(CP1251ToUTF8('файла с русским текстом.txt'));
for i:=0 to List.Count-1 do
Memo1.Lines.add(CP1251ToUTF8(List.Strings[i]));

как-то так... не проверял.

Поищи по форуму. Вопрос про кодировки ну ооооочень часто встречается. :|
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

AlexGordon писал(а):А можно чуть-чуть поподробнее?

Например:

Код: Выделить всё

uses ... , LConvEncoding;
...
var Buffer: TStringList;
...
Buffer := TStringList.Create;
Buffer.LoadFromFile('file.txt');
Memo1.Text := CP1251ToUTF8(Buffer.Text);
FreeAndNil(Buffer);

Только с TStringList будут накладные расходы на разбивку/склеивание значений. Лучший способ (загрузка строки из файла напрямую) есть например тут.
Аватара пользователя
dunin
энтузиаст
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и
Контактная информация:

Сообщение dunin »

Odyssey, проблем с концевыми символами строки не будет? Хотя если под Виндусом, то, скорее всего, без разницы.

Добавлено спустя 1 минуту 54 секунды:
Не, гоню. tStringList уже набор строк с правильным "окончанием". Полюбому все нормально. :)
Ответить