У меня ReadLn - не работает...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

У меня ReadLn - не работает...

Сообщение vitaly_l » 25.03.2013 12:41:42

Ничего не понимаю...
У меня ReadLn не работает...
Кликните, пожалуйста, у себя Ctrl+клик на ReadLn.
В каком uses находится ReadLn? (для текстовых файлов)



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: У меня ReadLn - не работает...

Сообщение bormant » 25.03.2013 13:33:49

ReadLn находится в модуле System, который подключен всегда вне вашего желания.
Поэтому, скорее всего, вы просто перекрыли System.ReadLn одноимённой процедурой в своём коде. Попробуйте в нужном месте вписать System.ReadLn в место ReadLn.
Аватара пользователя
bormant
постоялец
 
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Re: У меня ReadLn - не работает...

Сообщение vitaly_l » 25.03.2013 14:03:58

bormant писал(а):ReadLn находится в модуле System

Юмор в том что его там нет...
Но ReadLn - начал работать, только я всё равно - не могу посмотреть где он лежит...
т.к. Ctrl+клик на ReadLn не работает.
Assign - показывает.
Reset - показывает.
Close(f); - показывает.
А ReadLn - нет... и простым поиском его в System нет, хотя там: и Assign и Reset и Close...
Но это ужен не актуально, т.к. файл начал считываться и я прочитал то, что хотел и запустил cdecl.
правда только текстовый файл, а не форматированный.

Спасибо Вам.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: У меня ReadLn - не работает...

Сообщение Sergei I. Gorelkin » 25.03.2013 14:27:49

Readln не существует в виде процедуры, она преобразуется в последовательность вызовов fpc_read_text_sint, fpc_read_text_float и т.д.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: У меня ReadLn - не работает...

Сообщение vitaly_l » 25.03.2013 14:33:42

Sergei I. Gorelkin писал(а):Readln не существует в виде процедуры, она преобразуется в последовательность вызовов fpc_read_text_sint, fpc_read_text_float и т.д.

Спасибо - большое, добрый Sergei I. Gorelkin
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: У меня ReadLn - не работает...

Сообщение bormant » 25.03.2013 15:02:35

ReadLn не работает
и "не находится реализация ReadLn" -- несколько разные вещи. А так да, Read(Ln)/Write(Ln)/Str -- compiler magic -- операторы/процедуры, созданные надъязыковыми средствами, вместо них компилятор подставляет специфичные случаю реализации.
Аватара пользователя
bormant
постоялец
 
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Re: У меня ReadLn - не работает...

Сообщение vitaly_l » 25.03.2013 15:14:06

bormant писал(а):и "не находится реализация ReadLn" -- несколько разные вещи.

Нет он у меня вначале отказывался работать, т.к. в Вашем примере было ReadLn(f,n); где n: integer; и он выдавал ошибку. когда заменил на String всё стало работать. И тестовые файлы грузятся и cdecl работает. А вот мои файлы, я пока ещё не дешифровал...

Но зато благодаря Вам понял систему программирования того программиста который писал модуль.

Теперь пытаюсь понять как его модуль дешифровал форматированный файл...
Самое обидное, что модуль возможно не работает из-за несовместимости или не того порядка в инициализации uses'ов...



/
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: У меня ReadLn - не работает...

Сообщение Alex2013 » 03.04.2013 13:32:50

Текстовые файлы лучше всего читать-писать через TStringList или если читается только часть файла через TFileStream
А кроме того с ошибками в/в через исключения работать надежнее
Что-то вроде ...
Код: Выделить всё

Function ReadFromFile (Fn:String; FilePos,Size :Longint):string;
Var
Data:String;
F:TFileStream;
I:Longint;
begin
Data:='';
if FileExists(FN) then begin
  F:=TFileStream.Create(FN,fmOpenRead);
  try
   if FilePos+Size<=F.Size then
   begin
    f.seek(FilePos,soFromBeginning);
    For I:=1 to Size do
    begin
      data:=data ;
     f.Read(data[i],1);
    end;
   end
finally
  f.free;
end;
ReadFromFile:=Data;
end
end;

Alex2013
долгожитель
 
Сообщения: 3137
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

Рейтинг@Mail.ru