3 / 3 / 0
Регистрация: 30.01.2018
Сообщений: 373
1
RAD XE3+

Генерация из текстовых файлов

31.05.2018, 16:40. Показов 1262. Ответов 5
Метки нет (Все метки)

Друзья, слепил вот такой код. Суть кода в том что бы генерировать имя, фамилию и отчество из базы текстовых файлов.

Код что у меня получилось:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//////////////////Процедура по которой мы получаем данные из текстовых файлов
procedure Gen(s: String; E: TEdit);
var L: TStringList;
begin
 L := TStringList.Create;
 if not FileExists(s)
  then E.Text :='Файл не найден - если нет файлов: fam.txt,nam.txt, ot.txt'
  else begin
        L.LoadFromFile(s);
        if L.Count = 0
         then E.Text := 'Файл пустой'
         else E.Text := L.Strings[Random(L.Count)];
       end;
 L.Free;
end;
 
//////////////////Где:
fam.txt - текстовый файл в котором список фамилий
nam.txt - текстовый файл в котором список имен
ot.txt - текстовый файл в котором список отчеств
 
///////Процедура генерации
procedure TForm1.Button1Click(Sender: TObject);
var
  f1:TextFile;
  s:string;
  L:TStringList;
  i:integer;
begin
L:=TStringList.Create;
 Gen('fam.txt', Edit1);
 Gen('nam.txt', Edit2);
 Gen('ot.txt', Edit3);
 
 L.Add(s);
 L.SaveToFile('321.txt');
end;
 
////////////////// Где:
В [B]Edit1[/B] - Выводятся рандомные фамилия из файла: [B]fam.txt[/B]
В [B]Edit2[/B] - Выводятся рандомные имена из файла: [B]nam.txt[/B]
В [B]Edit3[/B] Выводятся рандомные отчества из файла: [B]ot.txt[/B]
И вот вопрос:
Как сделать так что бы: через SpinEdit1, указываю сколько строк, вида - фамилия имя отчество, генерировать и сохранить в файл. То есть, к примеру, в SpinEdit1 ввожу значение 20 и получаю результат (Сейчас у меня генерируется только одно значение и сохраняется в текстовый файл):
Енотина Агафья Якововна
Сюсин Клавдий Давидович
Бенедиктов Терентий Остапович
Богуна Ангелина Афанасиевна
Беломестина Бронислава Несторовна
Халимдаров Назар Игоревич
Ивлева Нина Афанасиевна
Сильвестров Вацлав Ерофеевич
Волынкина Екатерина Иосифовна
Молодыха Варвара Михеевна
Нутрихин Алексей Зиновиевич
Мелехов Казимир Венедиктович
Овчинникова Эмилия Захаровна
Макаркина Лидия Андрияновна
Пашина Марианна Степановна
Вьялицын Афанасий Моисеевич
Быков Вениамин Михаилович
Шентерякова Кира Якововна
Кумовьева Инесса Георгиевна
Удома Дина Ильевна
Миниатюры
Генерация из текстовых файлов  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2018, 16:40
Ответы с готовыми решениями:

Обработка текстовых файлов.
Помогите, а то я в них вообще запутался.... Добавлено через 1 час 2 минуты Ну помогите, кто...

Сравнение текстовых файлов.
Добрый день! Такое вот задание. Даны 2 текстовых файла. Проверить, все ли строки из 1-го...

Обработка текстовых файлов
Помогите пожалуйста с созданием данной программы,ещё очень плохо разбираюсь в delphi. Нужно создать...

Сравнение 2 текстовых файлов
Доброго времени суток, я уже создавал здесь тему и мне помогли добрые люди, ещё раз повторюсь я...

5
Модератор
8344 / 5556 / 2264
Регистрация: 21.01.2014
Сообщений: 23,848
Записей в блоге: 3
31.05.2018, 16:56 2
Лучший ответ Сообщение было отмечено Hardalternative как решение

Решение

Delphi
1
2
3
4
5
6
7
for i := 1 to SpinEdit1.Value do
 begin
  Gen('fam.txt', Edit1);
  Gen('nam.txt', Edit2);
  Gen('ot.txt', Edit3);
  L.Add(s); //??? А что такое это s - я не знаю!!!
 end;
1
3 / 3 / 0
Регистрация: 30.01.2018
Сообщений: 373
31.05.2018, 17:10  [ТС] 3
D1973, Сделал так, но создает пустой файл. S - это строки, то есть откуда брать filename. Что делаю не так ?
0
Модератор
8344 / 5556 / 2264
Регистрация: 21.01.2014
Сообщений: 23,848
Записей в блоге: 3
31.05.2018, 17:27 4
Лучший ответ Сообщение было отмечено Hardalternative как решение

Решение

Цитата Сообщение от Hardalternative Посмотреть сообщение
Что делаю не так
Без обид, но если честно - то почти все...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
uses ..., Math;
...
function Gen(s: String): String;
var L: TStringList;
begin
 L := TStringList.Create;
 L.LoadFromFile(s);
 result := L.Strings[RandomRange(0, L.Count)];
 L.Free;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
    List: TStringList;
begin
 if (not(FileExists('fam.txt'))) or (not(FileExists('nam.txt'))) or (not(FileExists('ot.txt'))) then
  begin
   ShowMessage('Отсутствуют еобходимые файлы');
   Exit;
  end;
 List := TStringList.Create;
 for i := 1 to SpinEdit1.Value do
  List.Add(Format('%s %s %s', [Gen('fam.txt'), Gen('nam.txt'), Gen('ot.txt')]));
 List.SaveToFile('321.txt');
 List.Free;
end;
Добавлено через 1 минуту
Ну и где-нибудь в OnCreate формы не забыть сделать randomize;
1
3 / 3 / 0
Регистрация: 30.01.2018
Сообщений: 373
31.05.2018, 17:43  [ТС] 5
D1973, Ну и где-нибудь в OnCreate формы не забыть сделать randomize;

Что это имеется в виду ? и в таком виде же работает.
0
Модератор
8344 / 5556 / 2264
Регистрация: 21.01.2014
Сообщений: 23,848
Записей в блоге: 3
31.05.2018, 18:13 6
Лучший ответ Сообщение было отмечено Hardalternative как решение

Решение

Цитата Сообщение от Hardalternative Посмотреть сообщение
и в таком виде же работает
В "таком виде" от запуска к запуску будет генерировать одни и те же значения. Создайте событие OnCreate главной формы (просто двойным кликом на пустом месте этой самой формы) и напишите там:
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
 Randomize;
end;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 18:13
Помогаю со студенческими работами здесь

Равенство текстовых файлов
Ребят. Нужно Delphi 2009 . Описать и проверить процедуру, проверяющую на равенство два текстовых...

Сохранение текстовых файлов
У меня в Tstringlist имеется к примеру 6000 строк, как сохранить допустим в три файла по 2к строк?

Создание текстовых файлов
В общем, мне надо создать программу при открытии которой, следует написать 16 текстовых компонентов...

Создание текстовых файлов
Добрый день! Подскажите, есть ли возможность создавать текстовые файлы в начале каждого месяца,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru