Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2009, 16:22   #1
Temka
Пользователь
 
Регистрация: 07.04.2009
Сообщений: 17
По умолчанию Файл в Лист боксе

вот у меня есть текстовой файл, в нем написано английское слово, знак "=" и перевод на русском.
как мне загрузить в листбокс только английские слова, и при нажатии на любое слово перевод выводился в Эдит.
Temka вне форума Ответить с цитированием
Старый 22.05.2009, 16:54   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

При создании формы:
Код:
procedure TForm2.FormCreate(Sender: TObject);
var
 t: TextFile;
 str: string;
begin
 AssignFile(t, 'D:\Words.txt');
 try
  Reset(t);
  while not EOF(t) do
  begin
   Readln(t, str);
   Delete(str, Pos('=', str), Length(str));
   ListBox1.Items.Add(str);
  end;
 finally
  CloseFile(t);
 end;
end;
При событии ListBox'а onClick:
Код:
procedure TForm2.ListBox1Click(Sender: TObject);
var
 t: TextFile;
 strEng, strRu: string;
begin
 if ListBox1.ItemIndex <> -1 then
 begin
  AssignFile(t, 'D:\Words.txt');
  try
   Reset(t);
   while not EOF(t) do
   begin
    Readln(t, strEng);
    strRu := strEng;
    Delete(strEng, Pos('=', strEng), Length(strEng));
    if strEng = ListBox1.Items[ListBox1.ItemIndex] then
    begin
     Delete(strRu, 1, Pos('=', strRu));
     Edit1.Text := strRu;
     Break;
    end;
   end;
  finally
   CloseFile(t);
  end;
 end;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.05.2009, 17:04   #3
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А зачем? Просто дописать в текстовый файл имя секции, например, [Words]
И далее грузим в листбокс...
Код:
  var ini: TINIFile;
begin
   ini := TIniFile.Create('D:\Words.txt');
ini.ReadSection('Words',ListBox1.Items);
ini.free;
end;
а при клике на слове
Цитата:
var ini: TINIFile;
begin
ini := TIniFile.Create('D:\Words.txt');
edit.Text := ini.ReadString('Words',ListBox1.Ite ms[ListBox1.ItemIndex],'');
ini.free
end;
Работать будет быстрее...
_SERGEYX_ вне форума Ответить с цитированием
Старый 22.05.2009, 17:10   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Можно так, но Temka просил просто в текстовом файле.
Пусть сам и решает. Если Temka новичек, то мой код будет поучительнее, хотя я бы сам пользовался предложенным _SERGEYX_
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.05.2009, 17:14   #5
Temka
Пользователь
 
Регистрация: 07.04.2009
Сообщений: 17
По умолчанию

Спасибо большое обоим.
но у меня возник еще вопрос.

а как сделать сортировку по этому листбоксу. Т.Е. при введении в Эдит буквы, в листбоксе строка переходила прямо на эту строку где есть эта буква первая.
допустим как в Предметных указателях в файлах-справках
Temka вне форума Ответить с цитированием
Старый 22.05.2009, 17:35   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот, при onChange Edit'а поиска:
Код:
procedure TForm2.Edit2Change(Sender: TObject);
var
 i, j: integer;
 str: string;
 br: boolean;
begin
 if ListBox1.Items.Count <> 0 then
  begin
  str := Edit2.Text;
  ListBox1.ItemIndex := 0;
  for i := 0 to ListBox1.Items.Count - 1 do
  begin
   for j := 0 to Length(str) - 1 do
    if ListBox1.Items[ListBox1.ItemIndex][j + 1] = str[j + 1] then
    begin
     br := true;
    end
    else 
    begin
     br := false;
     Break;
    end;
   if br then
   begin
    ListBox1.ItemIndex := i;
    Break;
   end
   else ListBox1.ItemIndex := ListBox1.ItemIndex + 1;
  end;
 end;
end;
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.05.2009, 17:46   #7
Temka
Пользователь
 
Регистрация: 07.04.2009
Сообщений: 17
По умолчанию

при этом коде он переходит на слово, на котором есть эта первая буква, а когда я нажимаю на вторую букву, то оно переходит уже на другое слово.

мне желательно чтобы когда вписываешь букву h слова переходили на те у которых первая букву h, потом при нажатии на о он шел дальше и останавливался там где есть ho и так далее пока не найдет house допустим
Temka вне форума Ответить с цитированием
Старый 22.05.2009, 17:52   #8
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

А вы проверили это?
Я специально так и сделал, как вам нужно.
Просто у меня все работает.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 22.05.2009, 20:40   #9
Temka
Пользователь
 
Регистрация: 07.04.2009
Сообщений: 17
По умолчанию

проверил, все правильно. но просто когда я букву ввожу он со скоростью прокручивает все строки и находит слово, но это очень долго.
можно ли сделать чтоб сразу переходило на эту строку быстрей или нет?
Temka вне форума Ответить с цитированием
Старый 22.05.2009, 21:18   #10
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Переходите на БД - там поиск осуществляется на порядки быстрее плюс ваш словарь будет иметь практически неограниченный объем.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новый лист Berrimor Microsoft Office Excel 1 08.09.2008 10:37
Добавить лист в pdf файл jungo Microsoft Office Excel 1 10.07.2008 16:45
Лист ZhekON Общие вопросы Delphi 5 17.04.2007 11:34
защитить лист zetrix Microsoft Office Excel 2 27.11.2006 17:21