![]() |
Помогите с Pascal Опять и Снова
Спасибо всем кто помго с предыдущим вопросом, но возник ноый. У меня никак не получилось считать из файла какие-то слова отдельно. Содержание файла D:\input.dat :
yes no yes no Вот текст проги который я пытался : program num; var a,b:string;f:Text; begin assign(f,'d:\input.dat'); reset(f); read(f,a); read(f,b); write(a,' - ',b); read(a);{} end. выводит: yes no yes no - т.е. если тип string, то она считывает по строкам. А если написать a,b : char, то она считывает по символам, т.е. y - e Помогите пожалуйста. Как сделать, чтобы она считывала по словам. Т.е. она должна вывести yes - no. :confused: |
Приводи текст программы и укажи каким текстовым редактором ты набираешь текст.
|
Текст проги:
program num; var a:integer;f:file of integer; begin assign(f,'d:\input.dat'); reset(f); read(f,a); write(a); read(a);{} end. Выводит: 13874 Содержание d:\input.dat: 26 Текстовый редактор - Turbo Pascal 7.0 |
Попробуй объявить файловую переменную так:
Код:
var f : text;UPD: По идее так должно работать: Код:
program num; |
Большое спасибо. Получилось. Оказывается, надо было переменную объявить как Text, а считывать числа. Еще раз спасибо!
|
Всё элементарно: когды ты в текстовом редакторе пишешь 26, то у тебя образуется два символа с шестнадцатеричными кодами 32 и 36. Когда ты читаешь из файла, при этом объявляя его типизированым file of int, то эти два кода воспринимаются как слово (два байта, 36 - старший, 32 - младший) и оно читается в твою целую двубайтовую переменную a. Если ты переведешь шестнадцатеричное 3632 в десятичное, то получишь как раз 13874.
Решение - читать файл не как типизированный целый, а как текстовый, и преобразовывать считанную строку в целое. Al-x Чутка опередил :yees: |
| Часовой пояс GMT +4, время: 09:07. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.