Сообщение отредактировано: Jaxx -
Прежде чем задать  вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
![]() ![]()  | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Значит так. Мне нужно написать следующую программу: небольшая формочка с тремя полями Memo, полем Label и двумя Батонами. Суть программы: есть 100 экз. билетов, в каждом из них по 3 вопроса. По нажатию на кнопку нужно вывести - в Label номер билета, в поля Memo вопросы из него. В программе, естественно использ. Random для выбора билета. Проблема моя в том, что я не знаю, как записать вопросы и билеты. Решил забить их в текстовый файл. В каждую строку по одному вопросу (то есть билет №1 - строки 1,2,3; билет №2 - строки 4,5,6) но как мне считать строки с определенными номерами и вывести их? Али может в какую-нить БД это все впендюрить? Правда ни разу не пользовал  
			
			Сообщение отредактировано: Jaxx - -------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Как вариант: берешь поток, приделываешь вначале Header в котором содержится вся инфа (кол-во записей + массив размеров каждой записи) пишешь через Memo.Lines.SaveToStream (вроде так, посмотри сам) и все... Считываешь след. образом: выбираешь (случайно) запись, считываешь все размеры ДО нее, пропускаешь их в файле, читаешь нужную...  
			
			P.S. Еще вариант: сделать через типизированный файл (к примеру, 1000 байт на текст + номер билета) ==> скучно и не эффективно... --------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Я тут другую систему придумал. Дело в том, что мне нужно все сделать максимально просто. Берем текстовый файл, пишем в него вопросы следующим образом: 
			
			Код 1Бла-бла-бла.... 1Снова бла-бла 1И еще раз бла 2Второй билет пошел 2В нем тоже бла-бла 2Но суть не в этом ... 100Бла-Бла 100Предпоследний Бла 100Бла-последний Потом Random генерит любое число до 100, считываем из файла строки, и если в начале записано число равное сгенерированному, то выводим его в Memo. Ну как я? -------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Тоже вариант...  
			
			--------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Цитата(Jaxx @ 16.06.05 12:01) <...>Потом Random генерит любое число до 100, считываем из файла строки, и если в начале записано число равное сгенерированному, то выводим его в Memo. Ну как я?  Орел !!!  | 
	
| Guest | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Цитата(volvo @ 16.06.05 12:07)  А вот у тебя 8 раз подряд сгенерируется число из последней десятки (90 .. 100) и будешь ты читать файл до посинения ... Оно тебе надо? А и нехай генерируется. Файл вообще-то не такой уж и большой. Если будет дмедленно работать, создастся видимость серьезной программы. А то - шух, и готово. Скучно. А насчет выбора Random-ом второй строки не совсем понял. Генерируется номер билета, а не строки из него. Например, сгенерилось "5", ищем строки с числом 5 в начале. Первую - в Memo1 (что-то у меня постоянно пишется Momo. К чему бы это?), вторую - в Memo2 и т.д.  | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Цитата А и нехай генерируется. Файл вообще-то не такой уж и большой. Если будет дмедленно работать, создастся видимость серьезной программы Молодец! Вот это подход! Вам, батенька, тока в "мелкомягких" работать --------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#8				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Цитата(AlienEmperor @ 16.06.05 12:33) Молодец! Вот это подход! Вам, батенька, тока в "мелкомягких" работать  Не, меня туда не возьмут. Разве что посуду мыть. Теперь еще возник вопрос. Например, выпал по воле случая билет намбер 5. Значит, нужно найтить строки, начинающиеся с цифирки "5". Как нам это сделать? На Паскале понятно- 
 А квак это делается в Delphi? -------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#9				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 И в чем проблема ? 
			
			--------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#10				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Ладно, пойдем другим путем. В прикрепленном файле - архив. Там лежит все, вместе с файлом вопросов (набирать запарился...). Гляньте, что я не так сделал. 
			Почему я написал: 
 где r-число, сгенерированное Random, f-файл, st-строка в которую считываем файл. А программка вылетает с ошибкой: 'И' is not a valid integer value. C какого перепугу оно буквы читает? Сообщение отредактировано: Jaxx - Прикрепленные файлы  
 M.rar ( 171.41 килобайт )
Кол-во скачиваний: 283-------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#11				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Тьфу, млин. Понял, сам дурак. StrToInt для всех символов строки - это оригинально. Особенно для букевок. А по другому как сделать подскажите? 
			
			-------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#12				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Так, глянул я енту фигню... Мне нравится такой подход: 
			
			Memo1.Lines.Clear; Memo1.Lines.Text:=st; ==> это вообще что такое ??? Вообще-то, у Memo есть такая фича как Memo1.Lines.Add ==> вот так надо, тогда строка создается, Насчет intToStr ==> надо читать посимвольно, если символ <> '0'..'9' то дальше не читаем, а преобразовываем в число... (как вариант - писать всегда фиксированные числа вида 001, 010, 999... А вообще, прога конечно ужас... Я бы советовал ее пристрелить... --------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#13				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Блин, посмотрел я этот index.txt... Слушай, а у тебя что ВСЕ записи по три строки ? 
			
			Тогда это вообще фигня, самому не допереть ? Берешь номер, умножаешь на три - получаешь номер строки, содержащий нужную запись, считываешь - это же вообще ерунда!!! --------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#14				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Не надо ее стрелять. :nono: Пока что. Вот про умножить номер на 3 - это не совсем правильно. Первый вопрос билета №3 - это строка номер 7. А если умножить - то мы возымеем последнюю строку. Так что мораль: считать надо так: (номер*3)-2. Класс?  
			
			Сообщение отредактировано: Jaxx - -------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#15				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Цитата считать надо так: (номер*3)-2. Класс? дааа... Долго думал ? А зачем их рэндомить ??? Берется число, к примеру 15... Далее создается временная строка типа "015" и она ищется в файле... Если есть - то ок ==> получена требуемая запись... --------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#16				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Ну, я вот тут подумал и решил. В самом деле, не стоит ставить цифры в строках. Это лишний г...рой. Цифры убрал. Выбор строки написал так: 
			
			
 Почему-то выбор строк происходит неправильно. Например, билет с номером 4 показывает строки начиная с 25, билет номер 5 - 34, второй билет кажет на 7 строку. В чем дело? А в половине нажатий в Memo вообще вылазиет не строка, а вертикальная черточка. Если пользовать Memo1.Lines.Add, то иногда в Memo остается часть другого текста. Сообщение отредактировано: Jaxx - -------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#17				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Ну так что, никто не хочет мне помочь? Я же знаю, что надоел уже.  
			Прикрепленные файлы  
 M.rar ( 170.97 килобайт )
Кол-во скачиваний: 261-------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#18				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Смотри, что происходит: 
			
			
					
		r:=random(73); { Ок, берем случайное число ...}
 попробуй, должно сработать... ;)  | 
	
| Jaxx | 
                        
			
			  
			
				 Сообщение
					#19				
			 
		 | 
	
        	
        		![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 145 Пол: Мужской Реальное имя: Павел Репутация:    0           	 | 
       
			
			 Ух ты, блин! Сработало! Неужели я так лопухнулся... М-да, не зря Volvo считаются чрезвычайно надежными машинами. Только вот еще вопрос напоследок: Random генерирует все числа до 100 (у меня пока 73), в том числе и 0. Как сделать, чтобы числа генерились начиная с 1? 
			
			-------------------- - Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные. 
					
		 | 
	
| AlienEmperor | 
                        
			
			  
			
				 Сообщение
					#20				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 160 Пол: Мужской Реальное имя: Серый Репутация:    0           	 | 
       
			
			 Ну, человек, ты кадр... 1+Random(n) - всегда с единицы будет... 
			
			--------------------  Все в жизни ботва... Кроме пчел! 
					
		 | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 12:22 |