Консультация № 198673
22.05.2020, 00:53
0.00 руб.
1 20 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Код программы:
[code lang=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.[/code]

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

Обсуждение

давно
Посетитель
404025
131
22.05.2020, 23:13
общий
Адресаты:
Здравствуйте, не подскажете как решить задачу?
давно
Старший Модератор
31795
6196
23.05.2020, 00:35
общий
Адресаты:
[code lang=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;[/code]
//== - тут, Вы предварительно выбрали фвйл, связали переменную f с файлом,

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

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


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

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


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

комменты обязательны, к каждой строчке.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404025
131
23.05.2020, 00:37
общий
Адресаты:
Да, вы правы. Код не подскажите?
давно
Старший Модератор
31795
6196
23.05.2020, 00:48
общий
Адресаты:
Сперва:
Цитата: Зенченко Константин Николаевич
Для начала напишите код, который выводит в консоль содержимое файла, пусть там будет пару строчек, имя произвольное, разширение произвольное, можно задать в программе, можно ввести с клавиатуры.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404025
131
23.05.2020, 00:51
общий
Адресаты:
Так я по методичке и делал это все, но в итоге файл открыть не могу.
давно
Старший Модератор
31795
6196
23.05.2020, 01:12
общий
Адресаты:
Цитата: Зенченко Константин Николаевич
Вы постоянно будете наступать на грабли и писать все, что написано в методичке(даже той, которая хорошо написана), даже не думая, что Вы пишите.


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

давно
Посетитель
404025
131
23.05.2020, 01:15
общий
Адресаты:
Это задания не для корочки, как вы думаете, а для дисциплины в институте...
давно
Старший Модератор
31795
6196
23.05.2020, 02:12
общий
Адресаты:
Цитата: Nedix
Это задания не для корочки, как вы думаете, а для дисциплины в институте...

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


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


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



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

Показываете рабочий код консоли, помогаю с решением. Все!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404025
131
23.05.2020, 15:24
общий
Адресаты:
Подскажите пожалуйста код. По поводу корочки СПЕЦА Делфи никакого мне не дадут, да я и не стремлюсь к этому... Просто обычное домашнее задание...
давно
Старший Модератор
31795
6196
23.05.2020, 15:34
общий
Адресаты:
Я практически ответил на Ваш вопрос:
Цитата: Зенченко Константин Николаевич
Открыли для чтения и Закрыли но не прочитали его(конечно чнение файла описано),
. . .
Назначили переменную s - но не используете её.

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

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

Нужно для того, чтобы Вы поняли что именно Вы написали.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404025
131
23.05.2020, 15:36
общий
Адресаты:
Да как это в моём коде отразить скажите пожалуйста.
давно
Старший Модератор
31795
6196
23.05.2020, 15:52
общий
Адресаты:
Поиск Гугл дает, первая из ссылок:лабы по информатике, есть такой код.
[code lang=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.[/code]
Теперь посмотрите на свой обработчик TForm1.ButtonReadClick
Цитата: Ваша методичка
Button – для открытия файла и считывания текста (Name =’ButtonRead’; Caption = ’Открыть’);

и найдите различия.
Открытие есть, чтения нет. А это должно было произойти после нажатия кнопки "Открыть".
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404025
131
23.05.2020, 17:20
общий
Адресаты:
Вот что получилось. На переименовывание не обращайте внимание. По примеру, если тоже ошибку выдает.
Прикрепленные файлы:
40369d5b1a16a4fc23508c8246b8fa6b.JPG
давно
Старший Модератор
31795
6196
23.05.2020, 17:53
общий
Адресаты:
Когда Вы начнете не просто копировать.
Вы пишите "ОКНО" - оконное приложение, а readln(a) и writeln(a) ЗАМЕТЬТЕ БЕЗ ФАЙЛОВОЙ ПЕРЕМЕННОЙ - подпрограммы "КОНСОЛИ" - консольного приложения. Как говорят в Одессе - это две большие разнницы.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
404025
131
23.05.2020, 19:17
общий
Адресаты:
Я вас не понял, как это исправить?
давно
Посетитель
404025
131
23.05.2020, 22:59
общий
Адресаты:
Подскажите пожалуйста, как исправить, если вам не сложно, это заключительная работа, которую надо сделать....
давно
Посетитель
404025
131
23.05.2020, 23:43
общий
Адресаты:
Вот что получилось...
Прикрепленные файлы:
23eff4a675f2dffc5077a4a2299340d9.JPG
давно
Посетитель
404025
131
23.05.2020, 23:46
общий
Адресаты:
Я так понимаю что-то с кодировкой файла
давно
Посетитель
404025
131
24.05.2020, 17:18
общий
Адресаты:
Проблему решил, такой вопрос, как в коде записать данное условие?
Прикрепленные файлы:
8c4fa55cd5e9ba3055d7ac7a0fba9747.JPG
давно
Старший Модератор
31795
6196
26.05.2020, 15:10
общий
это ответ
Здравствуйте, Nedix!

Ошибка тут:
[code lang=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;[/code]
Цитата: Методичка
Button – для открытия файла и считывания текста (Name =’ButtonRead’; Caption = ’Открыть’);

Все есть, а чтения файла нет.
Удачи!
5
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа