Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Starkow
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 117
#1

Считывание файла - Delphi

30.07.2013, 20:23. Просмотров 793. Ответов 4
Метки нет (Все метки)

Добрый день!
Подскажите, как сделать программу, которая бы считывала из текстового файла данные:

Текстовый файл:
Заголовок:
текст1
текст2
текст3
Заголовок2:
текст4
текст5
текст6
текст7

И в зависимости от количество "заголовков" создавала массив кнопок столбцом. и при нажатии на кнопку выводились все тексты
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2013, 20:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Считывание файла (Delphi):

считывание из файла - Delphi
прошу помочь написать программу считывающую текстовый файл и выводящую вторую половину файла в поле Memo. оч прошу помочь

считывание файла - Delphi
Добрый день. Есть вопрос может кто сталкивался. Мне нужно считать побайтно из одного файла и переписать в другой. Все какбы нормально...

Считывание из файла - Delphi
Имею файл с такой структурой type rec=record images:array of Tobject; end; var memorect:rec;Заношу данные: rewrite(f); for i:=0...

Считывание с файла - Delphi
Здравствуйте. подскажите пожалуйста, есть dat-файл 11 22 00 22 00 00 00 44 00 13 04 bb e4 0f 09 6c 2b e6 33 37 45 4e 11 22 0b 45 45...

Считывание файла на делфи - Delphi
Здраствуйте, помогите написать универсальную прогу на делфи, чтобы программа считывала любой файл dgt и рисовала рисунок в Image из файла...

Считывание из файла в Delphi - Delphi
Мне нужно сделать что-то вроде глоссария, при введение букв в edit, он должен выводить допустим в memo подходящие слова с определениями. Я...

4
Cyborg Drone
Модератор
5490 / 3099 / 1286
Регистрация: 17.08.2012
Сообщений: 10,020
31.07.2013, 00:57 #2
Файл текстовый. Поэтому поясните, что является признаком заголовка - двоеточие в конце оного? Или что-то другое? И как быть с заголовком более чем из одной строки?
0
Starkow
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 117
31.07.2013, 14:08  [ТС] #3
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Файл текстовый. Поэтому поясните, что является признаком заголовка - двоеточие в конце оного? Или что-то другое? И как быть с заголовком более чем из одной строки?
Да, двоеточие.
Более 1 строки не будет.
0
Storm Screamer
96 / 100 / 11
Регистрация: 21.04.2013
Сообщений: 1,171
02.08.2013, 06:14 #4
Считывать строки. Каждую строку обрабатывать: проверять подходит ли она под признак заголовка, если да, то увеличивать кол-во заголовков, создавать кнопки. Если нет, тогда строку добавлять в массив строк.
0
Vivo
23 / 23 / 2
Регистрация: 27.09.2009
Сообщений: 101
02.08.2013, 20:02 #5
Думаю, что можно сделать вот так:
Класс для заголовков и их текстов:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
  TTitle = class
  public
    Title: string;
    TextList: TStringList;
    constructor Create(aTitle: string);
  end;
Delphi
1
2
3
4
5
constructor TTitle.Create(aTitle: string);
begin
  Title := aTitle;
  TextList := TStringList.Create;
end;

Чтение из файла:
Кликните здесь для просмотра всего текста
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
procedure ReadTextFile(aFileName: string; var aTitleList: TList);
var
  lF: TextFile;
  lBuf: string;
  lCurrTitle: TTitle;
begin
  if (FileExists(aFileName)) then
  begin
    AssignFile(lF, aFileName);
    Reset(lF);
 
    while not EOF(lF) do
    begin
      readln(lF, lBuf);
      if isTitle(lBuf) then
      begin
        lCurrTitle := TTitle.Create(lBuf);
        aTitleList.Add(lCurrTitle);
      end
      else if Assigned(lCurrTitle) then
        lCurrTitle.TextList.Add(lBuf);
    end;
 
    CloseFile(lF);
  end;
end;

Проверка, что это заголовок:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
function isTitle(aText: string): boolean;
begin
  if aText[Length(aText)] = ':' then
    Result := true
  else
    Result := false;
end;

Создание кнопки:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure CreateButton(aTitle: string; aLeftPosition, aTopPosition,
  aIndex: integer; aParent: TForm);
var
  lButton: TButton;
begin
 
  lButton := TButton.Create(aParent);
  lButton.Caption := aTitle;
  lButton.Tag := aIndex;
  lButton.OnClick := OnButtonClick;
  lButton.Top := aTopPosition;
  lButton.Left := aLeftPosition;
 
  lButton.Width := 100;
  lButton.Height := 20;
 
  lButton.Parent := aParent;
end;

Обработка клика на кнопке:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
procedure OnButtonClick(Sender: TObject);
var
  i: integer;
  lIndex:integer;
begin
  Memo1.Clear;
  lIndex := TButton(Sender).Tag;
  for i := 0 to  TTitle(gTitleList[lIndex]).TextList.Count-1 do
    Memo1.Lines.Add(TTitle(gTitleList[lIndex]).TextList[i]);
end;

Объединяющая функция:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure MainFunction(aFilePath: string;
  aTopButtonStartPosition, aLeftButtonStartPosition: integer; aParent: TForm);
var
  i: integer;
begin
  gTitleList := TList.Create;
  ReadTextFile(aFilePath, gTitleList);
 
  for i := 0 to gTitleList.Count - 1 do
    CreateButton(TTitle(gTitleList[i]).Title, aLeftButtonStartPosition,
      aTopButtonStartPosition + (i * 25), i, aParent);
end;

Использовать:
Кликните здесь для просмотра всего текста
Глобально объявляем: gTitleList: TList;
Запуск:
Delphi
1
MainFunction('C:\1.txt', 10, 10, Form1);
0
02.08.2013, 20:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2013, 20:02
Привет! Вот еще темы с ответами:

Считывание тестов из файла - Delphi
Подскажите, как сформулировать и ссылаться на текст вопроса для теста из файла(.txt) таким способом? Вопрос1. Сколько вешать в...

Посимвольное считывание из файла. - Delphi
Как по символьно считывать данные из файла? Добавлено через 32 минуты или это сделать не возможно?

Считывание из файла в массив - Delphi
Столкнулся с проблемой. Есть блокнот, в нём 30 вопросов. Их нужно записать в масив, каждый вопрос в отдельный рядок масива... Масив 30 на...

Считывание файла в memo - Delphi
Как прописать чтобы после условия считывался определенный файл в формате .txt в Memo


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru