![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Rave |
|
|||
|
Unregistered |
Ввот такая ситуация: (Delphi 5)
Читаю в цикле строки из TStringList, успешно их разбираю (проверено в отладчике), и тут мне надо занести их части в конкретные строки созданных на форме объектов МЕМО. Первая строка - читается, заносится... Вторая строка - В одно МЕМО заносится, во второе - нет.. Третья строка и далее - разбираются нормально, но в МЕМО не идут... В чём может быть дело? procedure ReadPredmets(Source: TStringList); var TEMP : String; i : integer; posit : integer; begin If Source.Count>0 Then Begin For i:=0 to Source.Count-1 do Begin TEMP:=Source.Strings[i]; posit:=Pos(';',TEMP); pform2.Memo19.Lines[i]:=Copy(TEMP,1,posit-1); delete(TEMP,1,posit); posit:=Pos(';',TEMP); pform2.Memo11.Lines[i]:=Copy(TEMP,1,posit-1); delete(TEMP,1,posit); posit:=Pos('=',TEMP); if posit > 0 Then pform2.Memo12.Lines[i]:='OK'; End; End; end; Никаких объявлений размеров МЕМО предварительно не делал... Ситуация с заносом первой строки и половины второй - ставит меня в тупик... Я понимаю, что если первая строка правильно зашла, то код работает. Но вторая не заходит... Вот такая беда... Помогите, кто-нибудь? P.S. FAQ обчитался.... нетути... |
|||
|
||||
| Illusion Dolphin |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 36 Всего: 63 |
pform2.Memo19.Lines[i]:=Copy(TEMP,1,posit-1);
Насколько я знаю, то если в мемо не будет итой строки, то это обращение ни к чему хорошему не приведёт... Я бы делал что-то вроде этого: pform2.Memo19.clear; //очищаем мемо (по надобности, т.к. из кода не видно, что тебе необходимо... for i:=0 to Source.Count-1 do begin TEMP:=Source.Strings[i]; .... pform2.Memo19.Lines.add(Copy(TEMP,1,posit-1); //заносим построкова данные ... -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Спасибо, попробую...
А первоначальный размер МЕМО как-нибудь можно задать? Оно по дефолту пустое и я его инициализирую таким вот кривоватым образом... |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
В смысле? Оно максимум 65 килов, а про минимум я ничего не слышал. |
|||
|
||||
| Rave |
|
|||
|
Unregistered |
Может быть там при инициализации только одна строка ?
И при обращении к осталлным строкам до их создания - вылезают такие эффекты? |
|||
|
||||
| hhh |
|
|||
|
Unregistered |
2Rave
|
|||
|
||||
| hhh |
|
|||
|
Unregistered |
2Rave
Само сабой, как ты представляешь обратиться к несуществующему "пока" объекту? Прошу прощения за предыдущий пост - запарился |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
При инициализации - ноль строк. По определению.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Спасибо. С этим разобрался. По умолчанию в мемо уже есть одна пустая строка. Я её сперва очищаю, потом уже добавляю строки. В итоге получился вот такой код :
(Thanks to Illusion Dolphin for idea) If Source.Count>0 Then Begin pform2.Memo19.clear; For i:=0 to Source.Count-1 do Begin TEMP:=Source.Strings[i]; posit:=Pos(';',TEMP); //вместо pform2.Memo19.Lines[i]:=Copy(TEMP,1,posit-1); пишем pform2.Memo19.Lines.Add(Copy(TEMP,1,posit-1)); //заметьте lines без индекса. delete(TEMP,1,posit); и т.д. Вот. Так что спасибо. И ещё один вопрос остался: как определить, что фокус ввода находится в этом мемо? И чем отличаются события OnKeyPress и OnKeyDown? |
|||
|
||||
| Rave |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.6.2004 Репутация: нет Всего: нет |
Это я написал выше...
Заранее спасибо за ответы |
|||
|
||||
| bagira |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2858 Регистрация: 25.10.2003 Где: в тайге Уральских гор Репутация: нет Всего: 123 |
Rave 1. Для Memo существует два события фокуса: OnEnter и OnExit. Событие OnEnter происходит, когда элемент получает фокус ввода, а событие OnExit - когда теряет его. 2. Событие OnKeyPress - происходит при нажимании клавиши, а событие OnKeyDown - при отпускании ее. -------------------- Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил... Ф.Х. Дагларджа (Турция) http://zveriolginovour.ru/ https://vmeste.yandex.ru/zveriolginovour |
|||
|
||||
| Rave |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 5.6.2004 Репутация: нет Всего: нет |
Спасибо
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
bagira
Угу, а OnKeyUp когда происходит? И так OnKeyPres - происходит когда кнопка нажата и отпущена. OnKeyDown - когда кнопка нажата. OnKeyUp - когда кнопка отпущена. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |