Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi пустой указатель http://www.cyberforum.ru/delphi-beginners/thread931034.html
btClearClick(nil); Что в это случае означает nill - пустой указатель? зачем его записали сюда? procedure TMainForm.btClearClick(Sender: TObject); begin edName.Text:=''; edPatrName.Text:='';...
Delphi Ошибка функции IntToStr создаю дополнительный поток, объект Thread Object. В файле потока пишу такую процедуру procedure TCountObj.UpdateLabel; begin Form1.Label2.caption:=inttostr(index); end; Выдает ошибку ... http://www.cyberforum.ru/delphi-beginners/thread931022.html
как это реализовать Delphi
делаю всплывающую форму (какая то инфа) - его структура заголовок (label)- краткая информация(label)... Хочу что бы в поле краткой инфы после всего текста была надпись - подробнее, при нажатии на...
Delphi Копирование содержимых text файлов
Добрый день. Прошу помочь с кодом. Есть 2 txt файла. Содержанием каждого из них являются цифры. Пример входных файлов: файл №1 1 1 2 2 3 3
Delphi Консольная программа для скачивания файла http://www.cyberforum.ru/delphi-beginners/thread930910.html
Скиньте пример консольной программы которая обновляет файл, например в файле на сайте mysite.ru/ver.php написано "1.0", а программа проверяет если ver:=1.0;, то все ок, если нет качает файл ( не...
Delphi Invalid floating point operation возникает вот такая ошибка Invalid floating point operation var i,j,k,num:integer; m,l:real; begin for k:=0 to 2 do begin m:=0; num:=0; for j:=0 to form1.stringgrid2.colcount-2 do if... подробнее
Vivo
23 / 23 / 6
Регистрация: 27.09.2009
Сообщений: 101
02.08.2013, 20:02 0

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

02.08.2013, 20:02. Просмотров 818. Ответов 4
Метки (Все метки)

Ответ

Думаю, что можно сделать вот так:
Класс для заголовков и их текстов:
Кликните здесь для просмотра всего текста
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2013, 20:02
Готовые ответы и решения:

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

Считывание с файла
Здравствуйте. подскажите пожалуйста, есть dat-файл 11 22 00 22 00 00 00 44 00 13 04 bb e4 0f 09...

Считывание из файла
Имею файл с такой структурой type rec=record images:array of Tobject; end; var...

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

Считывание матрицы из файла
Задание следующее: Дана целочисленная матрица размером nxm. Определите количество элементов...

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