Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 13:53   #1
Natasha-pomosh
 
Регистрация: 18.01.2010
Сообщений: 8
Подмигивание Файлы в Delphi

Добрый день!
Вот такой вопрос: Из файла данные загружаются например в 2 поля Edit.
Если в файле данных больше чем 2 или меньше, должна выводиться ошибка. Не могу разобраться как это сделать, сделала без проверки, загружаются из файла только первые два, независимо сколько их всего.

procedure TForm1.N2Click(Sender: TObject);
{процедура обработки события "выбор пункта <Загрузить данные из файла> меню <файл>"}
var ff:TextFile;{файловая переменная для связи с текстовым файлом}
s:string;
a,b,c,d:integer;
err1,err2:integer;
begin
OpenDialog1.FilterIndex:=2;{при открытии диалога в поле Тип файла будет "*.txt"}
OpenDialog1.Options:=OpenDialog1.Op tions + [ofFileMustExist, ofPathMustExist];
{включаем опции, которые позволят пользователю повторить выбор файла, если был указан не существующий файл или папка}
if OpenDialog1.Execute then begin {если пользователь выбрал файл}
AssignFile(ff,OpenDialog1.FileName) ;
{связываем файловую переменную и выбранный пользователем файл}
{$I-}{отключаем автоматическую проверку операций ввода-вывода}
RESET(ff);{открываем файл для чтения}
err1:=IOResult; {запоминаем результат операции открытия файла}

if (err1=0) and (eof(ff)=true) {Проверяем пустой ли файл, если да, то выводим сообщение}
then
showMessage('Файл '+ OpenDialog1.FileName+' пуст!')

else begin {если файл не пустой}

Readln(ff,a,b,c,d); {считываем из файла данные}
err2:=IOResult; {запоминаем результат считывания данных}

if (err1=0) and (err2=0)
then begin {если без ошибок,отображаем считанные данные}
......
Подскажите как это сделать?
Natasha-pomosh вне форума Ответить с цитированием
Старый 07.06.2010, 14:48   #2
MaxNik2009
Форумчанин
 
Аватар для MaxNik2009
 
Регистрация: 17.09.2009
Сообщений: 294
По умолчанию

Пробуй через StringList:
Код:
procedure TForm1.N2Click(Sender: TObject);
var
  sl: TStringList;
begin
  sl:= TStringList.Create;
  try
    sl.LoadFromFile('ТвойФайл.txt');
  .........// тут проверяй сколько строк в файле,  все что тебе надо.
  finally
   sl.free;
  end;
end;
принимаю благодарности в письменном виде( весы слева)...
MaxNik2009 вне форума Ответить с цитированием
Старый 07.06.2010, 15:02   #3
Natasha-pomosh
 
Регистрация: 18.01.2010
Сообщений: 8
По умолчанию

Не совсем поняла...

В файле числа записаны как 1 2 3 4, а в эдиты мне надо 1 и 2 остальные лишние. И как вывести сообщение что данных больше?
Natasha-pomosh вне форума Ответить с цитированием
Старый 07.06.2010, 15:29   #4
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Если правильно понял, то так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
  sl: TStringList;
begin
  sl:= TStringList.Create;
  OpenDialog1.FilterIndex:=2;
  OpenDialog1.Options:=OpenDialog1.Options + [ofFileMustExist, ofPathMustExist];
  if OpenDialog1.Execute then sl.LoadFromFile(OpenDialog1.FileName);
  if sl.count=0 then
   begin
    showMessage('Файл '+ OpenDialog1.FileName+' Пуст!');
    sl.free;
    exit;
   end;
  edit1.text:=sl.strings[0];
  edit2.text:=sl.strings[1];
  if sl.count>2 then showmessage('Слишком много данных!');
  sl.free;
end;
Кстати это справедливо если цифры в файле хранятся построчно, а если все цифры идут одной строкой, то нужно делать иначе.
p.s.
Если помог, то вместо спасибо жми на весы (внизу под ником)

Последний раз редактировалось inndim; 07.06.2010 в 15:42.
inndim вне форума Ответить с цитированием
Старый 07.06.2010, 15:42   #5
Natasha-pomosh
 
Регистрация: 18.01.2010
Сообщений: 8
Хорошо

да цифры хранятся в файле в 1 строке.
Сейчас изменю, посмотрю что получится. Спасибо!
Natasha-pomosh вне форума Ответить с цитированием
Старый 07.06.2010, 15:54   #6
inndim
Пользователь
 
Регистрация: 08.06.2008
Сообщений: 74
По умолчанию

Ну, если цифры идут одной строкой, то тогда делай так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
  sl: TStringList;
  s:string;
begin
  sl:= TStringList.Create;
  OpenDialog1.FilterIndex:=2;{ïðè îòêðûòèè äèàëîãà â ïîëå Òèï ôàéëà áóäåò "*.txt"}
  OpenDialog1.Options:=OpenDialog1.Options + [ofFileMustExist, ofPathMustExist];
  if OpenDialog1.Execute then sl.LoadFromFile(OpenDialog1.FileName);
  if sl.count=0 then
   begin
    showMessage(''Файл '+ OpenDialog1.FileName+' Пуст!');
    sl.free;
    exit;
   end;
  s:=sl.strings[0];
  edit1.text:=s[1];
  edit2.text:=s[2];
  if length(s)>2 then showmessage('Слишком много данных!');
  sl.free;
end;
Можно сделать и короче, но мне лень, но думаю принцип тебе ясен. Удачи!

p.s.
Если помог, то вместо спасибо жми на весы (внизу под ником)
inndim вне форума Ответить с цитированием
Старый 07.06.2010, 16:08   #7
Natasha-pomosh
 
Регистрация: 18.01.2010
Сообщений: 8
Подмигивание

да, до меня дошло! Спасибо большое!
Natasha-pomosh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
файлы в delphi LastBreath Помощь студентам 1 03.06.2010 21:41
Файлы Delphi Likan15 Помощь студентам 1 19.05.2010 21:54
Delphi, файлы. Юлия_Конн Помощь студентам 4 15.05.2009 00:57
Файлы в Delphi Levhik Общие вопросы Delphi 5 07.02.2009 13:46
файлы Delphi tatb9na Общие вопросы Delphi 1 15.12.2008 03:23