Страница 2 из 3

Re: Задача на текстовые файлы(Delphi)

Добавлено: 12 май 2008, 19:06
MOTOCoder
Два варианта:
1. Просто использовать метод Memo.Lines.LoadFromFile.
2.Читать файл посимвольно и писать прочитанные символы в строку, пока не попадется последовательность #10#13, потом добавлять полученную строку в Memo.

Re: Задача на текстовые файлы(Delphi)

Добавлено: 12 май 2008, 19:09
DOM
вот у меня никак и не получается первый вариант((. Пишу Memo1.Lines.LoadFromFile(fName).Не работает пишет ошибка доступа-проблема в строчке:
readln(f,buf); с ней не знаю как что сделать, чтоб читался файл((
Если тебя не затруднит, напиши пожалуйста как должно выглядедь

Re: Задача на текстовые файлы(Delphi)

Добавлено: 12 май 2008, 19:22
MOTOCoder
Как-то не понимаю, в чем проблема.
Загрузка в Memo никак не связана с файловой переменной.
Допустим, есть файл C:\Temp\Data.txt.
Тогда без всяких File of Char и т.п. грузится так:
[syntax='Delphi']
Memo1.Lines.LoadFromFile('C:\Temp\Data.txt');
[/syntax]

Re: Задача на текстовые файлы(Delphi)

Добавлено: 12 май 2008, 19:29
DOM
Спасибо!! Дошло наконец то.Т.е OpenDialog фактически не нужен? А как тогда файл открыть из программы, который тебе нужно, не просписывая в коде путь к нему?

Re: Задача на текстовые файлы(Delphi)

Добавлено: 12 май 2008, 21:17
MOTOCoder
DOM писал(а):Спасибо!! Дошло наконец то.Т.е OpenDialog фактически не нужен? А как тогда файл открыть из программы, который тебе нужно, не просписывая в коде путь к нему?


Тогда как раз через OpenDialog:
[syntax='Delphi']
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
[/syntax]

Re: Задача на текстовые файлы(Delphi)

Добавлено: 15 май 2008, 20:08
DOM
В принципе с задачкой разобрался, сделал как препод говорит(бред правда).Вот что получается: пользователь вводит в Memo текст, затем он сохраняется в символьный файл, открывается из файла и читаются 2 первых символа в нем(в файле). Для создания, открытия и выполнения проги пришлось писать 3 обработчика(опять капризы препода) :( .Но осталась одна проблема-считывание двух первых символов для проверки четности полученного из них числа.
Вот код:

Код: Выделить всё

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.
Конкретно загвоздка в считывании("выделении") из файла(!!!) 2 первых символов, никак не получается, помогите дописать прогу :rolleyes:

Проблема с этой частью(обработчик считывания из файла):

Код: Выделить всё

procedure TForm1.N3Click(Sender: TObject);  //Процедура открытия файла и чтения
begin
   Reset(F);
   Read(F,m);


end;


Re: Задача на текстовые файлы(Delphi)

Добавлено: 15 май 2008, 21:14
MOTOCoder
Не понимаю, в чем проблема.
[syntax='Delphi']
Reset(F);
Read(F,C1);//первый символ
Read(F,C2);//второй символ
CloseFile(F);
[/syntax]

Re: Задача на текстовые файлы(Delphi)

Добавлено: 15 май 2008, 21:57
DOM
Проблема в том, что когда я также писал, то последняя процедура работала неправильно(всегда выдавалось сообщение "Два первых символа не цифры", хотя они были таковыми) :confused:

Re: Задача на текстовые файлы(Delphi)

Добавлено: 15 май 2008, 21:59
MOTOCoder
А каким образом проверяется, цифры это или нет?

Re: Задача на текстовые файлы(Delphi)

Добавлено: 15 май 2008, 22:11
DOM
Часть процедуры для проверки:

Код: Выделить всё

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, но это не столь важно)