Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

1760

Россия, пос. Теплоозёрск, ЕАО


ID: 400669

epimkin

Профессионал

686


ID: 226425

Konstantin Shvetski

Мастер-Эксперт

586

Россия, Северодвинск


ID: 400828

mklokov

10-й класс

270

Россия, Санкт-Петербург


ID: 404373

aDair

1-й класс

165


ID: 137394

Megaloman

Мастер-Эксперт

158

Беларусь, Гомель


ID: 400484

solowey

Профессор

124


8.1.0

30.11.2020

JS: 2.1.7
CSS: 4.1.7
jQuery: 3.5.1


 

Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

 
 

Лучшие эксперты в этом разделе

mklokov
Статус: 10-й класс
Рейтинг: 270
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 243
puporev
Статус: Профессор
Рейтинг: 84
 

Перейти к консультации №:
 

Консультация онлайн # 198673
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Nedix (Посетитель)
Дата: 22.05.2020, 00:53
Поступило ответов: 1

Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Код программы:

Код (Pascal) :: выделить код
procedure TForm1.ButtonFindClick(Sender: TObject);
var i,j,nom,k,Kol:integer; //объявляем переменные
sw,s:string;
begin
if trim(EditLetter.Text)=' ' then // делаем проверку на ввод символа
begin
  ShowMessage ('Введите символ');//вывод сообщения
  EditLetter.SetFocus;
  Exit;
end;
Kol:=0;  // присваиваем значения переменным
 Nom:=1;
 for i:=0 to MemoText.Lines.Count -1 do //считываем файл
 begin
   s:=MemoText.Lines[i];
   if s='' then continue;   // делаем отбор пустых строк
   if AnsiUpperCase(s[1])= AnsiUpperCase(EditLetter.Text[1]) then
   begin
     nom:=nom + 1;
     MemoResuls.Lines.Add(IntToStr(nom) + '.' + s);
   end;
   for j:=1 to length(s) do
     if s[j]='' then
     begin
       for k:=1 to length(s) do
         if AnsiUpperCase(sw[k])= AnsiUpperCase(EditLetter.Text[1]) then
         begin
           kol:= kol +1;
           break;
           end;
     sw:='';
     end
     else
     sw:=sw + s[j];
     end;
     LabelKol.Caption:= 'Букву ' + EditLetter.Text + ' содержит' +
       IntToStr(Kol) + ' слов';
       LabelKol.Visible:=true;



 end;

procedure TForm1.ButtonReadClick(Sender: TObject);
Var f:textFile;
s:string; // назначаем переменную
begin
if OpenDialog1.Execute then
begin
  AssignFile(f, OpenDialog1.FileName);
  Reset(f);
  CloseFile(f);

End;
EditLetter.SetFocus;
end;

procedure TForm1.MemoTextChange(Sender: TObject);
var f:textfile;
s:string;
begin
MemoText.Lines.Clear;
while not eof(f) do
Begin
  Readln(f,s);
  MemoText.Lines.Add(s);
  CloseFile(f);
end;

end;

   end.


Суть программы, что она должна открыть текстовый документ(стихотворение) и вывести его в Memo, код прописал, программа запускается, но файл не открывает. Работу приложен, делал по описанию (Часть 1)

-----
Прикрепленный PDF:  скачать (PDF) [771.3 кб]

Состояние: Консультация закрыта

Здравствуйте, Nedix!

Ошибка тут:

Код (Pascal) :: выделить код
procedure TForm1.ButtonReadClick(Sender: TObject);
Var
  f:textFile;
  s:string; // назначаем переменную
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(f, OpenDialog1.FileName);
    Reset(f);
    CloseFile(f);
  End;

Цитата: Методичка
Button – для открытия файла и считывания текста (Name =’ButtonRead’; Caption = ’Открыть’);

Все есть, а чтения файла нет.
Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 26.05.2020, 15:10

5
нет комментария
-----
Дата оценки: 26.05.2020, 15:13

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 198673

Nedix

Посетитель

ID: 404025

1

= общий = |  22.05.2020, 23:13 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Здравствуйте, не подскажете как решить задачу?

Зенченко Константин Николаевич

Старший модератор

ID: 31795

2

= общий = |  23.05.2020, 00:35 |  цитировать |  профиль |  личное сообщение
Nedix:

Код (Pascal) :: выделить код
procedure TForm1.ButtonReadClick(Sender: TObject);
Var
  f:textFile;
  s:string; // назначаем переменную 
begin 
  if OpenDialog1.Execute then 
    begin 
      AssignFile(f, OpenDialog1.FileName);
      Reset(f);//==
      CloseFile(f);
    End;

//== - тут, Вы предварительно выбрали фвйл, связали переменную f с файлом,

Открыли для чтения и Закрыли но не прочитали его(конечно чнение файла описано дальше, а в методичке нет такого понятия - думать), тогда вопрос а зачем Вы это сделали.
Назначили переменную s - но не используете её. Вам Delphi должно было написать , что переменная нигде не используется, задуматься - об этом в методичке ничего не написано.

Простите для VCL Delphi - ВЫ ещё не готовы.


VCL Delphi - это код, в котором есть свойства, параметры и события, обрабатывая которые можно писать код, который выполняет задачу. Но есть одно но - Кроме обработчиков событий - КОД DELPHI -жывет своей жызнью.
smile
Пока Вы это не осмыслите, Вы постоянно будете наступать на грабли и писать все, что написано в методичке(даже той, которая хорошо написана), даже не думая, что Вы пишите.


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

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

3

= общий = |  23.05.2020, 00:37 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Да, вы правы. Код не подскажите?

Зенченко Константин Николаевич

Старший модератор

ID: 31795

4

= общий = |  23.05.2020, 00:48 |  цитировать |  профиль |  личное сообщение
Nedix:

Сперва:

Цитата: Зенченко Константин Николаевич
Для начала напишите код, который выводит в консоль содержимое файла, пусть там будет пару строчек, имя произвольное, разширение произвольное, можно задать в программе, можно ввести с клавиатуры.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

5

= общий = |  23.05.2020, 00:51 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Так я по методичке и делал это все, но в итоге файл открыть не могу.

Зенченко Константин Николаевич

Старший модератор

ID: 31795

6

= общий = |  23.05.2020, 01:12 |  цитировать |  профиль |  личное сообщение
Nedix:

Цитата: Зенченко Константин Николаевич
Вы постоянно будете наступать на грабли и писать все, что написано в методичке(даже той, которая хорошо написана), даже не думая, что Вы пишите.


Методичка, это подсказка-не больше.
Пройдя все лабы, Вы получите корочку, СПЕЦА по VCL Delphi, но программы, которые Вы будете потом писать, на них не будет методичек, как и в жызни, на неё тоже нет методички.
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

7

= общий = |  23.05.2020, 01:15 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Это задания не для корочки, как вы думаете, а для дисциплины в институте...

Зенченко Константин Николаевич

Старший модератор

ID: 31795

8

= общий = |  23.05.2020, 02:12 |  цитировать |  профиль |  личное сообщение
Nedix:

Цитата: Nedix
Это задания не для корочки, как вы думаете, а для дисциплины в институте...

Святая проостота.
smile smile smile

Вы получаете диплом, в котором(или приложении к нему) будет запись СПЕЦА Delphi(прошли курс - отлично smile ), чем не корочка.
Мне не жалко - не убудет, но у Вас не прибавится.
smile

У меня 4.73, при красном 4.75, и "кинул" меня мой куратор, на экзамене, который он принимал, при этом на экзамене меня не было - выполнял его же задание. Это была последняя сесия, перед самими госами, которые я сдал на 5-ть. Он запутался после запятой.
smile


Ничего не изменилось:
Цитата: Зенченко Константин Николаевич
Для начала напишите код, который выводит в консоль содержимое файла, пусть там будет пару строчек, имя произвольное, разширение произвольное, можно задать в программе, можно ввести с клавиатуры.

Показываете рабочий код консоли, помогаю с решением. Все!

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

9

= общий = |  23.05.2020, 15:24 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Подскажите пожалуйста код. По поводу корочки СПЕЦА Делфи никакого мне не дадут, да я и не стремлюсь к этому... Просто обычное домашнее задание...

Зенченко Константин Николаевич

Старший модератор

ID: 31795

10

= общий = |  23.05.2020, 15:34 |  цитировать |  профиль |  личное сообщение
Nedix:

Я практически ответил на Ваш вопрос:

Цитата: Зенченко Константин Николаевич
Открыли для чтения и Закрыли но не прочитали его(конечно чнение файла описано),
. . .
Назначили переменную s - но не используете её.

Остальное за Вами.

Это
Цитата: Зенченко Константин Николаевич
Для начала напишите код, который выводит в консоль содержимое файла, пусть там будет пару строчек, имя произвольное, разширение произвольное, можно задать в программе, можно ввести с клавиатуры.

Нужно для того, чтобы Вы поняли что именно Вы написали.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

11

= общий = |  23.05.2020, 15:36 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Да как это в моём коде отразить скажите пожалуйста.

Зенченко Константин Николаевич

Старший модератор

ID: 31795

12

= общий = |  23.05.2020, 15:52 |  цитировать |  профиль |  личное сообщение
Nedix:

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

Код (Pascal) :: выделить код
var
   filetext: text;
   a,b,c:string;
begin
assign(filetext,'c:\text.txt');
reset(filetext);
readln(filetext,a);
readln(filetext,b);
readln(filetext,c);
close(filetext);
writeln(a);
writeln(c);
end.

Теперь посмотрите на свой обработчик TForm1.ButtonReadClick
Цитата: Ваша методичка
Button – для открытия файла и считывания текста (Name =’ButtonRead’; Caption = ’Открыть’);

и найдите различия.
Открытие есть, чтения нет. А это должно было произойти после нажатия кнопки "Открыть".
smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

13

= общий = |  23.05.2020, 17:20 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Вот что получилось. На переименовывание не обращайте внимание. По примеру, если тоже ошибку выдает.

-----
Прикрепленное изображение (кликните по картинке для увеличения):

Зенченко Константин Николаевич

Старший модератор

ID: 31795

14

= общий = |  23.05.2020, 17:53 |  цитировать |  профиль |  личное сообщение
Nedix:

Когда Вы начнете не просто копировать.
Вы пишите "ОКНО" - оконное приложение, а readln(a) и writeln(a) ЗАМЕТЬТЕ БЕЗ ФАЙЛОВОЙ ПЕРЕМЕННОЙ - подпрограммы "КОНСОЛИ" - консольного приложения. Как говорят в Одессе - это две большие разнницы.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Nedix

Посетитель

ID: 404025

15

= общий = |  23.05.2020, 19:17 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Я вас не понял, как это исправить?

Nedix

Посетитель

ID: 404025

16

= общий = |  23.05.2020, 22:59 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Подскажите пожалуйста, как исправить, если вам не сложно, это заключительная работа, которую надо сделать....

Nedix

Посетитель

ID: 404025

17

= общий = |  23.05.2020, 23:43 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Вот что получилось...

-----
Прикрепленное изображение (кликните по картинке для увеличения):

Nedix

Посетитель

ID: 404025

18

= общий = |  23.05.2020, 23:46 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Я так понимаю что-то с кодировкой файла

Nedix

Посетитель

ID: 404025

19

= общий = |  24.05.2020, 17:18 |  цитировать |  профиль |  личное сообщение
Зенченко Константин Николаевич:

Проблему решил, такой вопрос, как в коде записать данное условие?

-----
Прикрепленное изображение (кликните по картинке для увеличения):

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.