OberonCore https://forum.oberoncore.ru/ |
|
Как считывать из файла? https://forum.oberoncore.ru/viewtopic.php?f=23&t=2129 |
Страница 1 из 1 |
Автор: | Виталий [ Пятница, 27 Ноябрь, 2009 14:40 ] |
Заголовок сообщения: | Как считывать из файла? |
И снова я в эфире ![]() Считывать из файла хочу. Вот процедура: Код: (*************************************************) PROCEDURE AReadFile* (IN Path:ARRAY OF CHAR); VAR rfloc:Files.Locator; rd:Stores.Reader; rfFile:Files.File; s:ARRAY(200) OF CHAR; BEGIN StdLog.String(Path); StdLog.Ln; (**********************) rfloc:=Files.dir.This(Path); rfFile:=Files.dir.New(rfloc,FALSE); rd.ConnectTo(rfFile); HALT(0); rd.ReadString(s); StdLog.String("Строка"+s); StdLog.Ln; rfFile.Close(); (**********************) END AReadFile; Дело в том что Trap показал мне что .rfFile Files.File NIL Что я неправильно делаю? |
Автор: | Сергей Губанов [ Пятница, 27 Ноябрь, 2009 15:13 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
А у локатора поле res чему равно? Код: result # NIL
loc.res = 0 no error result = NIL loc.res = 1 invalid name loc.res = 2 location not found loc.res = 4 write-protection loc.res = 5 io error loc.res = 8 cancelled |
Автор: | Виталий [ Пятница, 27 Ноябрь, 2009 15:29 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Хм... Странно: Цитата: File.AReadFile:rfloc^ [0102FE60H] HostFiles.Locator^ .res INTEGER 3 .path HostFiles.FullName "c:\temp\1.txt" Но ведь такой файл существует... 2 кбайта весит даже... С кодировками тут проблем не может быть? (хотя наверно это я чушь горожу.) Но я пробовал на других файлах. та же история... Может стоит rfloc глобальным и публичным сделать? |
Автор: | Евгений Темиргалеев [ Пятница, 27 Ноябрь, 2009 15:30 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Виталий писал(а): Считывать из файла хочу. Что Вы хотите считывать из файла? А то может стандартные средства подойдут?StdCmds docu писал(а): PROCEDURE OpenDoc (file: ARRAY OF CHAR)
Takes a file specification of an BlackBox document as parameter, and opens the document in a document window. ... Example: "StdCmds.OpenDoc('System/Rsrc/Menus')" |
Автор: | Виталий [ Пятница, 27 Ноябрь, 2009 15:33 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Евгений Темиргалеев писал(а): Виталий писал(а): Считывать из файла хочу. Что Вы хотите считывать из файла? А то может стандартные средства подойдут?StdCmds docu писал(а): PROCEDURE OpenDoc (file: ARRAY OF CHAR) Takes a file specification of an BlackBox document as parameter, and opens the document in a document window. ... Example: "StdCmds.OpenDoc('System/Rsrc/Menus')" Женя, я хочу считать построчно, ну или посимвольно... Дабы потом каждую строку анализировать и делать что-то с ней. т.е. поймите меня правильно - я хочу УМЕТЬ. Или точнее научиться азам. |
Автор: | Евгений Темиргалеев [ Пятница, 27 Ноябрь, 2009 15:38 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Виталий писал(а): считать построчно, ну или посимвольно... Откуда? Из текстов ББ?text: TextModels.Model text := Views.OldView(loc, name)(TextViews.View).ThisModel() Чтение этих текстов описано в Part II, 5 Texts, 5.3 Reading text |
Автор: | Евгений Темиргалеев [ Пятница, 27 Ноябрь, 2009 15:41 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Виталий писал(а): Или точнее научиться азам. Как я понимаю, азы разбираются и объясняются на примерах вPart II, 4 Forms 5 Texts Part III, 6 View Constructions Вы там не смотрели? P.S. Извиняюсь, что ссылки привожу английские, русская документация не установлена - и как там точно - не помню ... по номерам найти можно ![]() |
Автор: | Сергей Губанов [ Пятница, 27 Ноябрь, 2009 15:52 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Виталий писал(а): Цитата: .res INTEGER 3 .path HostFiles.FullName "c:\temp\1.txt" Но ведь такой файл существует... existsAlready = 3; New - должна создать новый файл, но Вы сами сказали, что он уже есть. Для открытия уже существующего файла надо вызывать не New, а Old. Прочие коды ошибок: Host/Mod/Files.odc Код: CONST
tempName = "odcxxxxx.tmp"; docType = "odc"; serverVersion = TRUE; pathLen* = 260; nofbufs = 4; (* max number of buffers per file *) bufsize = 2 * 1024; (* size of each buffer *) invalid = KERNEL32.InvalidHandle; temp = 0; new = 1; shared = 2; hidden = 3; exclusive = 4; closed = 5; (* file states *) create = -1; ok = 0; invalidName = 1; invalidNameErr = 123; notFound = 2; fileNotFoundErr = 2; pathNotFoundErr = 3; existsAlready = 3; fileExistsErr = 80; alreadyExistsErr = 183; writeProtected = 4; writeProtectedErr = 19; ioError = 5; accessDenied = 6; accessDeniedErr = 5; sharingErr = 32; netAccessDeniedErr = 65; notEnoughMem = 80; notEnoughMemoryErr = 8; notEnoughDisk = 81; diskFullErr = 39; tooManyOpenFilesErr = 4; noSystemResourcesErr = 1450; noMoreFilesErr = 18; cancel = -8; retry = -9; |
Автор: | Виталий [ Пятница, 27 Ноябрь, 2009 15:58 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Цитата: Откуда? Из текстов ББ? Из любого файла. Как студентов учат в паскале через read читать элементы файла, то же я и в Обероне хочу научиться. Работать с моделями и вьюшками это я попозже, когда точнее пойму азы компонентов. Цитата: Для открытия уже существующего файла надо вызывать не New, а Old. А-а-а мда... Видимо тут я и ошибся... Спасибо сейчас попробую. |
Автор: | Евгений Темиргалеев [ Пятница, 27 Ноябрь, 2009 16:12 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Виталий писал(а): Как студентов учат в паскале через read читать элементы файла, то же я и в Обероне хочу научиться. По-моему, работа с текстами гораздо ближе к азам, нежели работа с файлами.. напрямую. Которую на себя каркас берёт... Поправьте меня, товарищи, если я не прав!
|
Автор: | Валерий Лаптев [ Пятница, 27 Ноябрь, 2009 18:28 ] |
Заголовок сообщения: | Re: Как считывать из файла? |
Это известный программистский стереотип - типовая программная ситуация, о которых я где-то уже здесь говорил. . Все привыкли, что файл - это поток символов или последовательность записей. Еще с Pascalя и Unix все привыкли. И ищут аналогии в КП+ББ. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |