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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2007, 01:49   #1
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию Вывод части текста из файла

Есть текстовый файл вида:
Код:
1
Текст1

2
Текст2

3
Текст3

...

100
Текст100
Есть ComboBox. В нем значения до 100.
Мне нужно чтобы при выборе в ComboBox одного из значений в memo записывалась нужная строка текста. Например, если выбрать 2, то записывается Текст2.
Нужно именно по строкам, а не поиском цифры. В текстовом файле выводимый текст на таких строках: 2, 5, 8, 11... То есть последняя +3.

Загружаю файл так: AssignFile(FileMap,'text.txt');

А как дальше не знаю! Думал что можно чтоб при выборе каждого из пунктов ComboBoxа выводилась нужная строка, хотя и это не знаю как сделать! Лучше наверно всё таки через цикл сделать. И как это сделать тоже не знаю!
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 15.08.2007, 01:58   #2
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Номер строчки вычисляется по формуле
Число_из_комбобокса*3-1
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Старый 15.08.2007, 08:18   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Coder скажи а файл этот формируется тобой? Если да то рекомендую его формировать через IniFiles. И потом соответственно доставать каждый элемент через него же. Имхо это будет лучше, да и не так уж сложно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.08.2007, 09:33   #4
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Лампочка

а те что обязательно из файла - буферизуй его

Код:
var ss:array of string;
f:textfile;
 
 
assignfile(f,'filename');
reset(f);
while not eof(f) do begin
setlength(ss,length(ss)+1);
readln(f,ss[length(ss)-1]);
end;
потом так как индексация итемов combobox начинается с 0 и индексация массива тоже то при выборе елемента просто обращаешься к элементу массива ss[combobox1.itemindex]
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 15.08.2007, 12:35   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

А еще лучше сделай невидимый ListBox (или TStringList, будет даже правильнее). У него есть методы сохранения/загрузки из файла. Нумерация совпадает с Combobox. Выбрал пункт в Combobox, загружай этот же номер из ListBox.
Зачем париться с массивом, текстовым файлом, если в Дельфи все уже сделано до нас
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 15.08.2007, 13:47   #6
CoDeR
Пользователь
 
Регистрация: 04.07.2007
Сообщений: 76
По умолчанию

Попробовал предложанными способами.
С IniFiles:
Код:
inifile:=tinifile.create('texts.ini');
Memo1.Text:=inifile.readstring('2','Text','hi!');

inifile.free;
Выводиться "hi!"! Это не то что надо! Что нужно написать вместо "Text" ?
Хочется разобраться и с IniFiles, даже если не это буду использовать!

Буферизую, получается, но выводиться именно та строка которая соответствует выбранному значению! Нужно как-то привязать

к этому "Число_из_комбобокса*3-1". Но у меня не получается!

С ListBoxом тоже самое. Будет выдаваться строка соответствующая выбранному значению. То же надо как то привязать

"Число_из_комбобокса*3-1".
И как тут сделать чтобы при выборе в ComboBoxе выводилось вообще что-то из ListBoxа?
http://wmhelpers.narod.ru/ - сайт программ, помогающими получить немного денег.
CoDeR вне форума Ответить с цитированием
Старый 15.08.2007, 14:09   #7
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от CoDeR Посмотреть сообщение
С ListBoxом тоже самое. Будет выдаваться строка соответствующая выбранному значению. То же надо как то привязать

"Число_из_комбобокса*3-1".
И как тут сделать чтобы при выборе в ComboBoxе выводилось вообще что-то из ListBoxа?
-=1=-
Код:
label1.Caption:=ListBox1.Items[strtoint(Combobox1.Text)*3-2];
При условии, что в ComboBox список начинается с 1, и каждый следущий элемент списка больше предыдущего на 1.
-=2=-
Код:
label1.Caption:=ListBox1.Items[Combobox1.ItemIndex*3+1];
Здесь текст в ComboBoxe привязка идет к номеру выбранной строки.
Alex21 вне форума Ответить с цитированием
Старый 15.08.2007, 14:12   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я тебе не только читать с помощью IniFile предложил, а и формировать файл. Я не зря спросил Как формируется твой файл? Твоей прогой или чужой? Ибо чтоб прочитать из ини-файла, нужно в него соответственно! записать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.08.2007, 14:26   #9
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Пример работы с INI
Код:
Uses IniFiles;
var 
 IniFile:TIniFile; 
begin 
  IniFile := TIniFile.Create('d:\test.INI'); { Создали экземпляр объекта } 
  IniFile.WriteBool('Options', 'Sound', True); { Секция Options: Sound:=true } 
  IniFile.WriteInteger('Options', 'Level', 3); { Секция Options: Level:=3 } 
  IniFile.WriteString('Options' , 'Secret password', Pass);  
   { Секция Options: в Secret password записать значение переменной Pass } 
  IniFile.ReadSection('Options ', memo1.lines); { Читаем имена переменных} 
  IniFile.ReadSectionValues('Options ', memo2.lines); { Читаем имена и значения } 
  IniFile.Free; { Закрыли файл, уничтожили объект и освободили память } 
end;
Alex21 вне форума Ответить с цитированием
Старый 15.08.2007, 18:17   #10
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Чтобы ты лучше понимал о чем идет речь - Combobox это Edit с прикрученным к нему ListBox'ом, со всеми вытекающими отсюда последствиями. Например возможности списка у них одинаковые.

з.ы. И как я писал выше вместо невидимого ListBoxa (ListBox = StringList + визуализация) лучше юзать StringList, он для этого и предназначен.
Преимущества перед ini, txt файлами налицо, чтобы загрузить строки из файла достаточно одной (или двух если с проверкой на сущ. файла) строки: StringList.LoadFromFile().
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 15.08.2007 в 18:31.
mutabor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод в edit текста с переменной NecroSlider Общие вопросы C/C++ 4 29.07.2008 14:42
Вывод текста(pascal) Dmtr Помощь студентам 1 29.05.2008 00:25
вывод из файла!!! Exclucive Общие вопросы C/C++ 2 24.05.2008 20:42
вывод текста в файл Индийское диско Общие вопросы Delphi 6 09.10.2007 12:43