Привет!
Если кто знает подскажыте, как написать программу которая будет выводить в Memo с определьоным интервалом времени разного рода фразы. У меня проблема заключается в том что я не могу написать в одной строке присвоении различных переменных, т.е. S: = 'a' + IntToStr (Random (100)); memo1.Text: = s;. А а1, а2, а3, а4 .. хотел сделать константами и в них содержать фразы. Возможно есть другой способ и я неправильно подошел к этому! Буду очень благодарен за помощь! Спасибо всем кто откликнется!
+++++
Подскажите алгоритм написания такой программы:
- Я имею 1000 фраз ().
- Нужно чтобы каждые 30 сек. Выводилась 1 фраза из 1000, и так по закрытом кругу.
- Как этого можно достичь.
4 октября 2009 в 0:01
Если что по коду не понятно, пиши… Там в папке с программой создаётся типизированный текстовый файл и заполняется на 1000 фраз (именно фраз, а не строк). Если его нет создаётся по новой, а если есть, то используется сущесутвующий
3 октября 2009 в 20:03
Да, скачал. Спасибо. Подходит.
3 октября 2009 в 16:03
А прогу то скачал? )) Там генератор на 1000 фраз и случайный вывод их через случайные промежутки + старт и пауза процесса
3 октября 2009 в 11:00
Всем большое спасибо за помощь. Очень благодарен. Я выбрал такой вариант:
[code delphi]
const
n = 5;
StringList : array[0..n]= ('Фраза1', 'Фраза2', 'Фраза3', 'Фраза4', 'Фраза5');
// в тексте программы писать:
Memo.Lines.Add(StringList[Random(n)]);
[/code]
3 октября 2009 в 9:01
#20 обычно делают иначе или организуют множество из которого исключают элементы и каждый раз соответственно размер множетсва меньше или в случае попадания i в уже использованный элемент выбирают первый неиспользованный после него(статистика случайности чуть хуже но на подобных задачах это не должно быть критично).
3 октября 2009 в 5:03
Типизированный файл позволяет переместится на любой блок заданного типа
3 октября 2009 в 4:02
А в дельфях что ли нет перемещение указателя на проивольную длину?
Я предлагаю следующий алгоритм:
Бесконечный цикл
Идём по файлу. считываем строку. запоминаем позицию.
Как таймер сработал перемещаем указатель на указатель предыдущей строки+длину самой строки. Счиваем итд.
Хм реализация в ваших руках. Никогда не программил на Дельфях.
3 октября 2009 в 2:04
Михаил Гыгыгышник Пеньков, Представь что у тебя 10.000 строк и из них 9.999 уже выведены, осталось только одна. Какова вероятность того, что строка будет найдена через час? ) Вообще задачка наверное не для вуза и там не будут требовать такого
3 октября 2009 в 2:03
Афтар, Я написал кое чё, глянь
//narod.ru/disk/13580792000/Archive.zip.html
3 октября 2009 в 2:02
#15 Ты представляешь, сколько времени уйдет у чела, чтобы присвоить в среде этим элементам строки? Хотя… можно опять же программно открыть файл, и перед каждой строчкой прописать там mas[i]:=… и потом все в среду скопировать.
Но на сколько тогда увеличивается размер исполняемого файла… сколько он оперативы будет жрать? В любом случае удобнее файлом, тупо задать: считывать строку №рандом. Кстати, думаю, что желательно исключать, т.е. не показывать уже показанные фразы. Как вы эту проблему решите? Массив булеанов? XDDD Спать хочу – туго соображаю, но думаю легче тупо дописывать в файл в конец прочитанной строки еще один какой-нить условный символ, а потом проверять строку на его наличие. А потом, когда все строчки с этим символом – значит прога пошла по второму кругу и пусть теперь не дописывает, а удаляет эти символы, и т.д.
3 октября 2009 в 0:05
Проще в файлике это всё хранить
3 октября 2009 в 0:05
вот и вывод в какой группе программисты помогают, а в какой [админ]вахтерша[/админ] только скобки расставляет.
3 октября 2009 в 0:04
а почему бы не использовать массив, состоящий из 1000 элементов типа string (или что-то в этом роде), затем в собственно программе генерировать случайное число – порядковый номер элемента массива:
var
strings: array[0..999] of string;
i:integer;
{где-то тут заполняем массив строками, откуда-то их берем))}
begin
{обработчик события компонента timer}
i:=random(1000);
Memo1.text:=strings[i];
end;
3 октября 2009 в 0:03
Дописываю, ловлю баги, ща будет звездолёт
2 октября 2009 в 23:05
#10 Где у тя хранятся фразы, оттуда и бери.
#1 "А а1, а2, а3, а4 .. хотел сделать константами и в них содержать фразы…." Охренеть! 1000 констант??? Оо
2 октября 2009 в 23:00
нет
2 октября 2009 в 22:05
Проблема решена? Я свободен? )
2 октября 2009 в 22:03
аi-ю строчку откуда взять? з файла!!!!
2 октября 2009 в 22:02
упячкаГенератор ?)
2 октября 2009 в 22:02
Cоздаешь Timer, в свойство Interval ему пишешь 30000, в событии OnTimer следующее:
var
i: integer;
s: string
begin
i:= Random(1001);
s:=// здесь берешь i-ю строчку
Memo1.text:= s;
end;
2 октября 2009 в 22:02
огромное спасибо
2 октября 2009 в 22:00
Дельфи? Написать?
2 октября 2009 в 22:00
Да
2 октября 2009 в 22:00
Ну тогда жди
2 октября 2009 в 22:00
Жду!!!
2 октября 2009 в 21:05
Если не можешь в одной строке написать присвоение различных переменных, то напиши begin, далее в несколько строк, а в конце end;