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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.03.2016, 22:13
Xia Xia вне форума
Прохожий
 
Регистрация: 21.03.2016
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
Печаль Как считать многострочный текст из файла, цикл for

Что нужно добавить в процедуру, чтобы считывался многострочный файл и выводился на экран?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 fin:TextFile;
begin
 if OpenDialog1.Execute then
 begin
  AssignFile(fin,OpenDialog1.FileName);
  Reset(fin);
  while not eof(fin) do
   begin
     readln(fin,st);
   end;
  Label1.Caption:=st;
 end;
end;

Далее в веденных из файла строках нахожу слова, начинающиеся с прописной буквы а и выписываю их. Как сделать так, чтобы после того, как я выписал слово, цикл продолжал работу, пропуская его? Зачем лишний раз проверять слово?
Код:
procedure resh(var st:string);
var
 i,j:integer;
 st2:string;
begin
 for i:=1 to length(st) do
 begin
  if st[i]='А' then
  begin
  j:=i;
  st2:=' ';
   while st[j]<>' ' do
   begin
    st2:=st2+st[j];
    inc(j);
   end;


Вот пример файла:

у Маши было две собаки
Апрель был теплым
Федя не сделал уроки
люди ждали поезда
Апельсин большой
Ответить с цитированием
  #2  
Старый 22.03.2016, 00:03
Аватар для Kailon
Kailon Kailon вне форума
Активный
 
Регистрация: 06.06.2010
Сообщения: 339
Версия Delphi: 10.4
Репутация: 429
Сообщение

Вот тебе универсальная функция, которая возвратит набор слов, которые начинаются с указанного символа:
Код:
function GetWords(aSource: String; aSymbol: Char): TStringList;
var
  SL: TStringList;
  I: LongWord;
begin
  SL := TStringList.Create;
  with SL do
    begin
      LoadFromFile(aSource);
      Delimiter := ' ';
      DelimitedText := Text;
      for I := Count - 1 downto 0 do
        if Copy(SL[i], 1, 1) <> aSymbol then
          Delete(I);
    end;
  Result := SL;
end;
Пример вызова:
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
  I: LongWord;
  SL: TStringList;
begin
  Memo1.Clear;
  SL := GetWords('Test.txt', 'А');
  for I := 0 to SL.Count - 1 do
    Memo1.Lines.Add(SL[i]);
  SL.Free;
end;
__________________
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете.

Последний раз редактировалось Kailon, 22.03.2016 в 00:06.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter