Задача на текстовые файлы(Delphi)
Два варианта:
1. Просто использовать метод Memo.Lines.LoadFromFile.
2.Читать файл посимвольно и писать прочитанные символы в строку, пока не попадется последовательность #10#13, потом добавлять полученную строку в Memo.
1. Просто использовать метод Memo.Lines.LoadFromFile.
2.Читать файл посимвольно и писать прочитанные символы в строку, пока не попадется последовательность #10#13, потом добавлять полученную строку в Memo.
Ни что так не ограничивает фантазию программиста, как компилятор...
вот у меня никак и не получается первый вариант((. Пишу Memo1.Lines.LoadFromFile(fName).Не работает пишет ошибка доступа-проблема в строчке:
readln(f,buf); с ней не знаю как что сделать, чтоб читался файл((
Если тебя не затруднит, напиши пожалуйста как должно выглядедь
readln(f,buf); с ней не знаю как что сделать, чтоб читался файл((
Если тебя не затруднит, напиши пожалуйста как должно выглядедь
Как-то не понимаю, в чем проблема.
Загрузка в Memo никак не связана с файловой переменной.
Допустим, есть файл C:\Temp\Data.txt.
Тогда без всяких File of Char и т.п. грузится так:
[syntax='Delphi']
Memo1.Lines.LoadFromFile('C:\Temp\Data.txt');
[/syntax]
Загрузка в Memo никак не связана с файловой переменной.
Допустим, есть файл C:\Temp\Data.txt.
Тогда без всяких File of Char и т.п. грузится так:
[syntax='Delphi']
Memo1.Lines.LoadFromFile('C:\Temp\Data.txt');
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Спасибо!! Дошло наконец то.Т.е OpenDialog фактически не нужен? А как тогда файл открыть из программы, который тебе нужно, не просписывая в коде путь к нему?
DOM писал(а):Спасибо!! Дошло наконец то.Т.е OpenDialog фактически не нужен? А как тогда файл открыть из программы, который тебе нужно, не просписывая в коде путь к нему?
Тогда как раз через OpenDialog:
[syntax='Delphi']
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
В принципе с задачкой разобрался, сделал как препод говорит(бред правда).Вот что получается: пользователь вводит в Memo текст, затем он сохраняется в символьный файл, открывается из файла и читаются 2 первых символа в нем(в файле). Для создания, открытия и выполнения проги пришлось писать 3 обработчика(опять капризы препода)
.Но осталась одна проблема-считывание двух первых символов для проверки четности полученного из них числа.
Вот код:
Конкретно загвоздка в считывании("выделении") из файла(!!!) 2 первых символов, никак не получается, помогите дописать прогу 
Проблема с этой частью(обработчик считывания из файла):

Вот код:
Код: Выделить всё
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Menus;
type
TForm1 = class(TForm)
Label1: TLabel;
Memo1: TMemo;
MainMenu1: TMainMenu;
File1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
F:file of char;
m,n:char;
s,z: string;
i,j:integer;
procedure TForm1.N2Click(Sender: TObject); //Процедура создания файла
begin
AssignFile(F,'TOPIK.dat');
ReWrite(F);
For i:=0 to Memo1.Lines.Count-1 do
begin
s:=Memo1.Lines[i];
For j:=0 to length(s) do
Write(F,s[j]);
end;
CloseFile(F);
end;
procedure TForm1.N3Click(Sender: TObject); //Процедура открытия файла
begin
Reset(F);
Read(F,m);
end;
procedure TForm1.N4Click(Sender: TObject); //Процедура обработки файла
begin
If (m in ['0'..'9']) and (n in ['0'..'9'])
then
begin
i:=StrToInt(m+n);
If (i mod 2 )=0
then
ShowMessage('Число четное')
else
ShowMessage('Число нечетное');
end
else ShowMessage('Два первых символа не числа');
CloseFile(F);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
close;
end;
end.

Проблема с этой частью(обработчик считывания из файла):
Код: Выделить всё
procedure TForm1.N3Click(Sender: TObject); //Процедура открытия файла и чтения
begin
Reset(F);
Read(F,m);
end;
Не понимаю, в чем проблема.
[syntax='Delphi']
Reset(F);
Read(F,C1);//первый символ
Read(F,C2);//второй символ
CloseFile(F);
[/syntax]
[syntax='Delphi']
Reset(F);
Read(F,C1);//первый символ
Read(F,C2);//второй символ
CloseFile(F);
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Проблема в том, что когда я также писал, то последняя процедура работала неправильно(всегда выдавалось сообщение "Два первых символа не цифры", хотя они были таковыми) 

А каким образом проверяется, цифры это или нет?
Ни что так не ограничивает фантазию программиста, как компилятор...
Часть процедуры для проверки:
Может каким другим способом проверять?
P.S Полный код проги выше написал(только 1-й и 2-й символы у меня назывались m и n, а не C1 и C2, но это не столь важно)
Код: Выделить всё
If (C2 in ['0'..'9']) and (C2 in ['0'..'9'])
then
begin
i:=StrToInt(C1+C2);
If (i mod 2 )=0
then
ShowMessage('Число четное')
else
ShowMessage('Число нечетное');
end
else ShowMessage('Два первых символа не числа');
P.S Полный код проги выше написал(только 1-й и 2-й символы у меня назывались m и n, а не C1 и C2, но это не столь важно)