Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Вниз

Как считать строку из typed файла?   Найти похожие ветки 

 
Glex ©   (2006-05-01 23:20) [0]

С обычными read, readln проблема следующая:

Если в исходном файле есть строка с leading/trailing spaces, то read и readln считывают не строку, как она есть, а trim"нутую строку.
Исходные коды посмотреть не могу, т. к. функции просто зашиты в компилятор :(

subj


 
Mr tray   (2006-05-02 00:02) [1]

Мэй. Я ничё не понял :(


 
Glex ©   (2006-05-02 00:16) [2]

Mr tray.

Перечитай или объясни что не понял конкретнее.
Кстати, что такое "Мэй"?


 
palva ©   (2006-05-02 00:59) [3]

> Перечитай или объясни что не понял конкретнее.
Непонятно, что такое readln для typed файла.
Непонятно как вам удалось при чтении trim"нуть строку.


 
Rial ©   (2006-05-02 01:12) [4]

Заводишь буфер.
Читаешь туда по 64 КБ (или любая степень двойки,
начиная примерно с 12-й), пока не конец файла.
Из буфера читаешь посимвольно и анализируешь:
конец строки - #10, #13 или #10#13.

Работать, кстати говоря, будет быстврее, чем стандартные ReadLn и Read.
Заодно, будут читаться и длинные строки.


 
Glex ©   (2006-05-02 18:35) [5]

Rial

Спасибо!
Я так понял BlockRead оптимальнее всего. Или лучше потоки?


 
Glex ©   (2006-05-02 18:48) [6]

palva

1) Файлы бывают
typed, text, and untyped.

text - это file of char, т.е он typed.
если файл объявлен просто как file, то он untyped(с неуказанным типом, или нетипизированный).

Вы правы, читать Readln"ом можно только из text.
Опечатался, хотел написать не typed, а text.

2) Попробуйте, например, считать такой textfile:

"   3 spaces to left"


В считанной строке будет "3 spaces to left" вместо "   3 spaces to left".
Следовательно, процедура Readln не просто считывает строку из textfile"а, как сказано в хелп (Reads a line of text from a file.), а ещё делает с ней trim.
---------------------------------------------------

Блин, жалко, что исходников процедуры нету =(
Я так и не нашёл в хелпе, как делать процедуры с произвольным ([]) числом параметров


 
Anatoly Podgoretsky ©   (2006-05-02 19:10) [7]

Я так и не нашёл в хелпе, как делать процедуры с произвольным ([]) числом параметров

(const array of const);


 
palva ©   (2006-05-02 23:08) [8]

Glex ©   (02.05.06 18:48) [6]

> text - это file of char
Ну это у Вирта, в стандарте паскаля.
А в делфи это разные вещи.

> 2) Попробуйте, например, считать такой textfile:
Я попробовал на Win2000 D7

{$APPTYPE CONSOLE}
var
 f: Text;
 s: String;
Begin
 AssignFile(f, "tttt1");
 Rewrite(f);
 Writeln(f, "   3 spaces to left");
 Reset(f);
 ReadLn(f, s);
 Writeln("***"+s+"***"); // ***   3 spaces to left***
 CloseFile(f);
End.

Не тримится. Видно не судьба.


 
Rial ©   (2006-05-02 23:20) [9]


> Я так понял BlockRead оптимальнее всего. Или лучше потоки?


Лучше

Var FileId:THandle;
....
FileId:=FileOpen(FileName,***);
If (FileId=-1)then ...  //не помню как константа называется
Try
...
Finally
FileClose(FileId);
end;

Либо CreateFile(..). Но тут слишком много параметров для начала.
*** fmOpenRead fmOpenWrite, и т.д., перейди по ссылке на эти
константы, а там еще есть. И F1.

Все равно BlockRead использует этот же метод, но
чуть медленнее.
К тому же с файлом, открытым средствами Reset(...),
сложнее обращаться, ИМХО.


 
Rial ©   (2006-05-02 23:27) [10]


> Anatoly Podgoretsky ©   (02.05.06 19:10) [7]


> (const array of const);


У меня глупый вопрос, а каким образом влияет на производительность
объявление Const Array Of Const ... в процедуре ?
Т.е. почему этот вариант оптимальнее, чем просто "Array Of Const" ?


 
Германн ©   (2006-05-03 02:16) [11]


> Rial ©   (02.05.06 23:27) [10]
>
>
> > Anatoly Podgoretsky ©   (02.05.06 19:10) [7]
>
>
> > (const array of const);
>
>
> У меня глупый вопрос, а каким образом влияет на производительность
> объявление Const Array Of Const ... в процедуре ?
> Т.е. почему этот вариант оптимальнее, чем просто "Array
> Of Const" ?

Ну, например потому, что избавляет компиллятор от излишних раздумий о возможности тех или иных манипуляций с данным массивом. В этом варианте разработчик берёт на себя всю ответственность!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
2-1146393493
Antip
2006-04-30 14:38
2006.05.21
Как узнать, что компьютер в залоченном состоянии?


2-1146647246
tigra
2006-05-03 13:07
2006.05.21
Удалить файлы с одним расширением


1-1144417536
Steplerr
2006-04-07 17:45
2006.05.21
32-битные иконки в TreeView - как?


2-1146161091
Gydvin
2006-04-27 22:04
2006.05.21
Помогите разобраться


2-1146207157
gerakla
2006-04-28 10:52
2006.05.21
Помогите мну





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский