Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в ListBox записать в определеную строчку? как перозаписать строку в ListBox 
:(
    Опции темы
Homer12
Дата 3.1.2007, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.1.2007

Репутация: нет
Всего: нет



Проблема мне надо записать текст в определеную строчку ListBox например в 0 строку 
вот код берет текст 
Edit1.text:=ListBox1.Items[0];
а вторая проблема я не могу проверить есть одинаковый текст в ListBox
например:
я вожу два раза одно и тоже слово и он должен выдать что такоу слово есть в списки 
Зарание блогодарен. smile 
PM MAIL   Вверх
anwe
Дата 3.1.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: нет
Всего: 23



Цитата(Homer12 @  3.1.2007,  22:12 Найти цитируемый пост)
Edit1.text:=ListBox1.Items[0];

занесет в edit строчку из листа. Надо наоборот:
Код
ListBox1.Items[0]:=Edit1.text
Ну а второе - обычное сравнение строк.
PM MAIL   Вверх
Sunvas
Дата 4.1.2007, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89





--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
alf138
Дата 15.11.2009, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



BoxТакая проблема нужно сравнить две строчки в ListBox, т.е 2и4, 5и7, 8и10 срочки находятся и выводятся в ListBox 
Код

var S:String; I:integer; b:Char; l:integer; c:String;
begin
 S:=IntToStr(Socket.SocketHandle)+'>'+Socket.ReceiveText;
 l:=Length(S);
 b:=S[l];     
 c:=S[5];    
 ListBox1.Items.Add(S);
 ListBox1.Items.Add(b);
 ListBox1.Items.Add(c);
if ListBox1.Items[2]=ListBox1.Items[4] then   <=== Вот в этом месте ругается как по другому сравнить срочки в ListBox ???
for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
ServerSocket1.Socket.Connections[i].SendText('ok');  



Это сообщение отредактировал(а) alf138 - 15.11.2009, 13:01
PM MAIL   Вверх
Данкинг
Дата 15.11.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



if ListBox1.Items.Strings[2]=ListBox1.Items.Strings[4] ........



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 15.11.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Большое спасибо. Осталось придумать алгоритм проверки.

Это сообщение отредактировал(а) alf138 - 15.11.2009, 13:22
PM MAIL   Вверх
Данкинг
Дата 15.11.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



А какой алгоритм может быть: проходишь в цикле по строчкам и сравниваешь.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 15.11.2009, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Так у меня получилось что например в строчке 2 есть что то а вот в 4 еще нету так вот еще, обьясню подробнее у меня задание создать подобие игры в города на технологии socket, т.е один игрок посылает название вот у меня получается 

1 строчка = само название города
2 строчка =  последний эллемент в этом слове
3 строчка = первый эллемент.
 
Теперь мне на сервере нужно придумать цикл чтобы при ошибки он еще и отправлял сообщение клиент о неправильном слове .
PM MAIL   Вверх
Данкинг
Дата 15.11.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(alf138 @  15.11.2009,  14:05 Найти цитируемый пост)
Так у меня получилось что например в строчке 2 есть что то а вот в 4 еще нету 

Есть такое свойство: ListBox1.Items.Count. smile Оно возвращает число строк в ListBox'е.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alf138
Дата 15.11.2009, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Спасибо огромное, получилось. Теперь алгоритм остался 
Код
if ListBox1.Items.Count>3 then
if ListBox1.Items.Strings[2]=ListBox1.Items.Strings[4] then   
for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
ServerSocket1.Socket.Connections[i].SendText('OK '+ ' next '+'"'+ b +'"');  

И какой тут алгорим ... Что то на ум не чего не приходит. 
При том нужно заменить одну строчку  smile 
Код

if ListBox1.Items.Strings[2]=ListBox1.Items.Strings[4] then 

2=>4
5=>7
8=>10


Это сообщение отредактировал(а) alf138 - 15.11.2009, 15:24
PM MAIL   Вверх
amsoft
Дата 15.11.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 3
Всего: 4



чтобы пробежаться по всему списку, можно сделать так

Код

for X := 0 to (ListBox1.Items.Count div 3) - 2 do
     if ListBox1.Items.Strings[X*3+2] = ListBox1.Items.Strings[X*3+4] 
     then for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
                  ServerSocket1.Socket.Connections[i].SendText('OK '+ ' next '+'"'+ b +'"');


PS 
Код

(ListBox1.Items.Count div 3) - 2
    
делим на 3, т.к. в списке кол-во строк всегда кратно 3, а отнимаем 2, чтобы цикл начал работать, когда в списке кол-во строк не меньше 6
     

Это сообщение отредактировал(а) amsoft - 15.11.2009, 16:45
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
alf138
Дата 15.11.2009, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Не работает, первый раз отрабатывает потом затухает. 
Код

276>авыаыв
в
а
276>аывх
х
а
276>хххл
л
х

Притом первый раз отрабатывает не отправляя сообщения а потмо на все шлет безразлично какие буквы  первая или последняя.
PM MAIL   Вверх
amsoft
Дата 15.11.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 3
Всего: 4



все работает
у тебя же должны быть равны строки с индексами 2 и 4, 5 и 7
а в твоем примере строка с индексом 2 равна а, 4 строка - х, 5 - а, 7 - л
поэтому и не работает
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
alf138
Дата 21.11.2009, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 15.11.2009

Репутация: нет
Всего: нет



Мучил неделю не чего сдвинуть не могу все как было так и осталось 
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var S:String; I:integer; b:Char; l:integer; c:String; j:integer; X:integer;
begin
 S:=IntToStr(Socket.SocketHandle)+'>'+Socket.ReceiveText;
 l:=Length(S); // Находим длину строки
 b:=S[l];      // выводим последний элемент строки
 c:=S[5];      // выводим первый элемент строки
 ListBox1.Items.Add(S);
 ListBox1.Items.Add(b);
 ListBox1.Items.Add(c);
if ListBox1.Items.Count>3 then
if ListBox1.Items.Strings[2]=ListBox1.Items.Strings[4] then     // если последняя буква одинакова с первой то отправляем "ОК"
for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
ServerSocket1.Socket.Connections[i].SendText('OK '+ ' next '+'"'+ b +'"');   // ServerSocket1.Socket.Connections[i].SendText('OK');
 if b<>c then
 for i := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
   ServerSocket1.Socket.Connections[i].SendText('FAIL');
 For I:=0 to ServerSocket1.Socket.ActiveConnections-2 do begin
 if ServerSocket1.Socket.Connections[i].SocketHandle<>Socket.SocketHandle then
  ServerSocket1.Socket.Connections[i].SendText(S);
 end;
end;

Все циклы котрые писали выше впихнуть не удалось, или ошибка или работает один раз. Подскажите пожалуйста где неправильно ?
PM MAIL   Вверх
amsoft
Дата 21.11.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 201
Регистрация: 17.10.2009
Где: KZ, Astana

Репутация: 3
Всего: 4



мне не понятна структура твоего списка
у тебя список имеет такой вид:

0: название города1
1: последняя буква
2: первая буква
3: название города2
4: последняя буква
5: первая буква

теперь ты сравниваешь строку 2 со строкой 4 (т.е. первую букву в названии города1 с последней буквой в названии города2)  smile 
По-моему последняя буква в названии города1 должна совпадать с первой буквой в названии города2

Поменяй список на такой вид:

0: название города1
1: первая буква
2: последняя буква
3: название города2
4: первая буква
5: последняя буква

теперь можешь сравнивать строку 2 со строкой 4, 5 с 7, 8 с 10 с помощью следующего кода

Код

X := ListBox1.Items.Count div 3;
if X > 1
then if ListBox1.Items.Strings[(X-2)*3+2] = ListBox1.Items.Strings[(X-2)*3+4]
         then begin                                                                                                                                                                  
                 //делаешь что тебе надо при совпадении (слово правильное)
                 end
         else begin                                                                                                                                                                  
                 //делаешь что тебе надо если нет совпадения (слово неправильное)
                 end;


в этом коде всегда проверяются только последние строки в списке (по-моему тебе это и надо)
--------------------
"Кто бы ты ни был - не думай о себе слишком"Дельфин
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.