07.06.2020, 03:32 [+3 UTC]
в нашей команде: 4 600 чел. | участники онлайн: 0 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
05.06.2020, 04:11

Последний вопрос:
06.06.2020, 21:42
Всего: 152584

Последний ответ:
06.06.2020, 22:39
Всего: 260257

Последняя рассылка:
06.06.2020, 16:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
09.02.2010, 20:48 »
lamed
Спасибо за оперативную помощь! [вопрос № 176519, ответ № 259254]
22.08.2010, 11:48 »
alexandr07
Спасибо Андрей Владимирович за отличный ответ [вопрос № 179743, ответ № 262832]
18.08.2019, 17:47 »
dar777
Это самое лучшее решение! [вопрос № 196152, ответ № 278535]

РАЗДЕЛ • Pascal / Delphi / Lazarus

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

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

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

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 432
Delph
Статус: 3-й класс
Рейтинг: 317
puporev
Статус: Профессор
Рейтинг: 149

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

Консультация онлайн # 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) » [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 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
Зенченко Константин Николаевич:

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

-----
 Прикрепленный файл (кликните по картинке для увеличения):

 

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

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16414 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39