Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.02.2011, 21:55
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию прочитать из файла строки от А до Б

Код:
for i:=А to Б do
 for a:=1 to I do  readln(Tanek,html);
end
ShowMessage(html);
нужно из файла прочесть строки от А до Б, так не работает, есть варианты?
Ответить с цитированием
  #2  
Старый 14.02.2011, 22:08
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Самый легкий вариант - загрузить все в TStringList.
Код:
var
  s: TStringList;
  i: integer;
  A, B: Integer;
begin
  s:=TStringList.Create;
  S.LoadFromFile('file.txt');
  A := Pos('А', S.Text);
  B := Pos('Б', S.Text);
  for i:=A to B do
...
  S.Free;
end;
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 14.02.2011, 22:10
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

нет там 12мб так что не вариант
ну так
Код:
for a:=1 to I do  readln(Tanek,html);

же можно прочитать строку I неужели нельзя никак сделать и чтобы от А до Б
Ответить с цитированием
  #4  
Старый 14.02.2011, 22:32
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Не как если это текстовый файл. Надо прочитать весь файл, а потом уже выдирать то, что тебе надо. Или еще вариант: читать все строки подряд, не сохраняя их не куда (просто readln), пока не встретишь "А". Как встретил - начинать читать дальше, только записывать все в переменную. И только встречается символ "Б" - останавливаешь цикл.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #5  
Старый 14.02.2011, 22:41
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Загрузить в стринг лист, сделать сортировку, а дальше как в ответе выше.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 14.02.2011, 22:48
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

v1s2222 можете привести собственно пример
Цитата:
читать все строки подряд, не сохраняя их не куда (просто readln), пока не встретишь "А". Как встретил - начинать читать дальше, только записывать все в переменную. И только встречается символ "Б" - останавливаешь цикл.
Ответить с цитированием
  #7  
Старый 14.02.2011, 22:49
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

M.A.D.M.A.N. не вариант, жрет +24мб памяти если грузить в стринг лист
Ответить с цитированием
  #8  
Старый 14.02.2011, 23:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,032
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Читай построчно через textFile, когда появится что-то отличное от A и Б - выбрасывай:

Код:
var
  F : TextFile;
  L : TStringList;
  S : String;
begin
  L := TStringList.Create;
  Try
    AssignFile(F,'c:\myfile.txt');
    Reset(F);
    While Not EOF(F) Do
      Begin
        ReadLn(F,S);
        If S <> '' Then
          If S[1] In ['А','Б','а','б'] Then // Заглавные и нет.
            L.Add(S)
      End;
   CloseFile(F);
  Finally
    L.Free;
  End;
end;


Как-то так.
Ответить с цитированием
  #9  
Старый 14.02.2011, 23:21
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Код:
var
  i: integer;
  s, buf: string;
  b: Boolean;
label x;
begin
b := false;
s:='';
... (assign, reset и т.д.)
while(not(EOF(F)) do begin
  ReadLn(F, buf);
  for i:=1 to length(buf) do begin
    if(buf[i] = 'А') then
      b:=true;
    if(b) then
      S:=S+buf[i];
    if(buf[i] = 'Б') then
      goto x;
  end;
end;
x:
  showmessage(s);
Есть ошибки. Это просто пример для понимания, читаем пока не конец файла строки, и бегаем циклами по каждой из прочитанных строк. Если встречается буква "А", то начинаем все записывать в переменную, если "Б" - переходим на метку.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #10  
Старый 14.02.2011, 23:36
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

не так поняли А и Б это номера строк
Ответить с цитированием
  #11  
Старый 15.02.2011, 00:08
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Ну значит не так объяснили. Если использовать типизированные файлы - то функция seek переместит вас куда нужно.
http://www.delphibasics.ru/Seek.php
__________________
Помогаю за Спасибо
Ответить с цитированием
  #12  
Старый 16.02.2011, 19:28
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

тогда файл txt как объявить
Tanek: File of ???;
Ответить с цитированием
  #13  
Старый 16.02.2011, 19:30
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Код:
F: TextFile;
__________________
Помогаю за Спасибо
Ответить с цитированием
  #14  
Старый 16.02.2011, 19:33
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

не, тогда Seek(Tanek,3); не работает
Ответить с цитированием
  #15  
Старый 16.02.2011, 19:36
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Значит seek для типизированных файлов.
Тогда например так:
Код:
  F: File of Integer;
Вообще стандартные функции по забывал
__________________
Помогаю за Спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter