Forth
http://www.fforum.winglion.ru/

баг-не-баг, но неприятность
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2545
Страница 1 из 9

Автор:  WingLion [ Вт мар 23, 2010 06:06 ]
Заголовок сообщения:  баг-не-баг, но неприятность

Итак, имею на винте в корне папку forth\ в ней папка fork\ в которой вся структура папок форка, его исходники и примеры. И в ней же моя папка test\ с тестовыми файлами на форте

сижу в тестовой папке, даю команду:
e:\forth\fork\test\>..\fork.exe test.frt

fork загружается и выдает:
Ошибка: Не удается найти указанный файл.

A надо, чтобы находил.
Без прямого указания пути к исходнику где либо!
а то и:
e:\forth\fork\test\>..\fork.exe ..\test.frt
ту же ошибку выдает :(

p.s. Возможно я туплю и fork старый...
mOleg kernel fork(mininoleg@yahoo.com). build from SPF4.17 sources.
windows Version 4.10 Build 234 at 28.Nov.2009

Автор:  вопрос [ Вт мар 23, 2010 07:40 ]
Заголовок сообщения: 

ворос один - по отношению к чему определяется текущая папка?

Автор:  WingLion [ Вт мар 23, 2010 07:49 ]
Заголовок сообщения: 

вопрос писал(а):
ворос один - по отношению к чему определяется текущая папка?


Tекущая папка, она на диске определена в самой операционке, или в windows не так как в DOS?

А надо бы, вообще, чтобы fork находился независимо от того, где он находится...
набрать в командной строке fork.exe my_src.my_like_extension_for_my_programm
находясь в той папке, где исходник лежит, и чтобы работало без всяких "файл-нот-фаундов"

Автор:  вопрос [ Вт мар 23, 2010 08:01 ]
Заголовок сообщения: 

e:\forth\fork\test\>..\fork.exe test.frt

e:\forth\fork\test\>..\fork.exe ..\test.frt

по крайней мере это два разных файла test.frt

что будет, если задать полный путь?

мне кажется, что это комбинация
- установок форка (он где-то ищет а не просто ищет)
- того, чтьо ему подсовывает ось как текущую папку

Автор:  _Harry [ Вт мар 23, 2010 10:30 ]
Заголовок сообщения: 

Вобще то в форке по умолчанию путь от его корневой папки находится или нужно указывать полный путь.
Версия уже старовата хотя по этношению к этой ситуации это не имеет значения.
Код:

.\DIR\....\file.fts - так относительный путь от корня форка.
С:\DIR\....\file.f - ну и как обычно


Я обычно использую вот такие батники (удобно)
Код:
@echo off
C:
CD \src4-mc10-b256\ 
fork.exe h/ MyDebug.fts h/ MSP430\msp430I2C.fts

h/ это короткий путь к папке который прописывается в fork.ini

Автор:  WingLion [ Вт мар 23, 2010 20:43 ]
Заголовок сообщения: 

Достать левой ногой правое ухо в принципе возможно, но можно и копчик подвернуть...

Ясно, что никто никому ничего не должен, но хочется, чтобы работать было удобно, чтобы не надо было рабочие папки куда-то внутрь форка прописывать для того чтобы работать нормально.
И надо, чтобы каждый раз при запуске не надо было указывать путь к исходнику, с которым идет работа.

В конце концов, у меня может быть десяток проектов (ну и что, что недоделанных?!)
И в них свои либы, свои дополнительные папки и т.д. и т.п.
И все-все-все это прописывать где-то там, "на хуторе близ диканьки" совсем не интересно.
А если у меня в разных проектах одинаковые имена файлов используются, то они еще и мешать друг другу начнут при такой организации.

Поэтому, хочется, чтобы было примерно так:

Форк запускается (из любого места) через указание полного пути к нему или указания корневой папки форка в %PATH%
После запуска fork сам определяет, какой текущий путь был в момент его запуска и немедленно назначает его первым путем для поиска. Где-то там, надо еще и дополнительно иметь возможность указать, что от пути запуска для поиска использовать дополнительные относительные пути.

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

Автор:  chess [ Вт мар 23, 2010 21:08 ]
Заголовок сообщения: 

WingLion писал(а):
Таким образом, получится, что любой проект в исходниках можно спокойно переписать в какую-нибудь другую папку и там продолжить над ним работу (модифицировать, улучшить, переделать на корню и т.п.) И чтобы при этом не потребовалось заниматься сизифовым трудом по прописыванию путей, которые завтра придется стирать.

Одним щелчком мыши или enter-ом открываю текстовый файл с фортоским расширением, где бы он не находился.
В редакторе также щелчком мыши запускаю файл на трансляцию с помощью любого форт.exe, выбираемого в окне быстрого запуска
редактора.
Так удобнее и быстрее.

Автор:  вопрос [ Вт мар 23, 2010 22:35 ]
Заголовок сообщения: 

WingLion писал(а):
Ясно, что никто никому ничего не должен, но хочется, чтобы работать было удобно, чтобы не надо было рабочие папки куда-то внутрь форка прописывать для того чтобы работать нормально.

не привязан ли форк жестко к С:\ :?:
Вот, устанавливая масм32, обнаружил, что он не видит собственных include , стал разбираться, не разобрался, но встретил о нем статью, где рекомендовано ставить исключительно на С: (у меня было на D )

Автор:  VoidVolker [ Вт мар 23, 2010 22:47 ]
Заголовок сообщения: 

вопрос писал(а):
Вот, устанавливая масм32, обнаружил, что он не видит собственных include , стал разбираться, не разобрался, но встретил о нем статью, где рекомендовано ставить исключительно на С

Ага, его можно только на С:\

Автор:  _Harry [ Вт мар 23, 2010 23:19 ]
Заголовок сообщения: 

Не знаю почему молчит афтар :roll:
Но помоему никуда форк не привязан.
Если указан полный путь к файлу то все открывается как надо.
Были в недавних версиях эксперементы с путями может у WingLion-а как раз эта версия и есть?
У меня проблем не возникает с файлами . Версия http://www.forth.org.ru/~mOleg/src4-mc10-b256.zip
А короткие пути прописываются легко, но это не обязательно использовать.

Автор:  mOleg [ Пт мар 26, 2010 09:05 ]
Заголовок сообщения: 

WingLion писал(а):
A надо, чтобы находил.
Без прямого указания пути к исходнику где либо!

на вопрос уже отвечал. Форк ищет файл инициализации. То есть, при перемещении исполнимого файла как минимум нужно копировать и fork.ini и тащить его с собой. Понятно, что при этом ini файл надо подправить (убрать подгрузку лишних вещей).
Другой вариант подключить все либы, потом:
FALSE TO INIT?
и
s" work.exe" SAVE
тогда получится новый исполнимый файл со всеми нужными либами не требующий файла инициализации.

Если не ошибаюсь, этот момент в доке я описывал...
notes.txt писал(а):
\ 28.02.2009 ~mОleg
\ заметки по поводу возникших вопросов у пользователей fork-a

При запуске система ищет два файла fork.msg и fork.ini

файл fork.msg содержит текстовые сообщения системы, в случае его ненахождения
ничего кроме отсутствия осмысленных сообщений об ошибках не происходит, сами
ошибки выглядят(в случае отсутствия fork.msg) так:
'Error: 2'
вместо осмысленного:
'Error: Не удалось распознать лексему!'
fork.msg не рекомендуется редактировать в ручную!

файл fork.ini содержит настройки системы, и подключает по умолчанию
необходимые файлы. В случае его ненахождения в корневой папке, или папке из
которой запущен исполнимый файл система выходит с ошибкой. Избежать этого
можно установив переменную INIT? в нуль:
0 TO INIT?
и сохранением системы:
s" noini.exe" SAVE
изменить имя файла инициализации можно с помощью слова INI-FILE :
s" another.ini" INI-FILE
соответственно систему так же необходимо сохранить.

За более подробными сведениями обращаться к .\kernel\os\win\options.f

_Harry писал(а):
Не знаю почему молчит афтар

были проблемы с деньгой, небыло инету, сейчас чуть полегчало.

Автор:  mOleg [ Пт мар 26, 2010 09:07 ]
Заголовок сообщения: 

вопрос писал(а):
не привязан ли форк жестко к С:\

нет, ни коим образом, хотя привязка к путям таки имеется в отношении библиотек.
как красиво разрешить эту проблему я пока не придумал (надо в либах какие-то идентификаторы выдумывать, чтоб по ним можно было определить, загружена ли библиотека уже или нет). Но это другой вопрос, отличный от обсуждаемого

да, идеалогия самого форка такова, что имеется небольшой (по возможности ничего лишнего) исполнимый файл, который при запуске подключает необходимые библиотеки, понятно, что в каждом отдельном случае могут быть нужны разные либы.
Поэтому, предполагается, что либо библиотеки будут "тягаться" вместе с исполнимым файлом, либо будет правиться файл инициализации.

Автор:  mOleg [ Пт мар 26, 2010 14:49 ]
Заголовок сообщения: 

прошу прощения, предыдущие ответы несколько на другую тему (поспешил ответить ;) ).

делаю папку .\test
в ней файл zzz.f
с текстом
s" aaaaaaaaaaaaaaaaaaaa" TYPE CR

в ком строке набираю:
..\fork.exe zzz.f
наблюдаю
<pre>
D:\fork\src-104\test>..\fork.exe zzz.f
mOleg kernel fork(mOlegg@ya.ru). build from SPF4.17 sources.
windows Version 4.10 Build 265 at 26.Mar.2010

fork.ini included
aaaaaaaaaaaaaaaaa
FORTH(0)>
</pre>
вывод, возьми последнюю версию пожалуйста :)

Автор:  WingLion [ Пт мар 26, 2010 23:32 ]
Заголовок сообщения: 

вот и попался баг-не-баг, но неприятность в последней сборке...

описание:

1. В папке C:\Forth\fork\ находится форк со всеми своими папками (просто как распаковывается из сборки)
В эту же папку копирую свою папку winglion\ с исходниками на форте
В нее же (в корень форка) копирую пару файлов make_silence.bat и zzzz.f описаные ниже
2. Запускаю make.bat получаю fork.exe - ok
3. Запускаю make_silence.bat в нем просто команда fork.exe zzzz.f а в файле zzzz.f
Код:
os/ save.fts

' NOOP IS PROMPT
' NOOP IS OK

' NOOP MAINX A!

FALSE TO INIT?

s" forth.exe" SAVE
BYE


на выходе получаю "молчаливый форк" под именем forth.exe

----- на этом подготовка к ловле "бага" заканчивается

4. захожу в C:\Forth\fork\winglion\

и запускаю свой исходник на компиляцию

..\fork.exe test.frt >list.txt

В файле list.txt получаю не то что хотел, потому что надо запускать через "молчаливый форк"

..\forth.exe test.frt >list.txt

тогда результат "правильный"


5. Теперь возвращаюсь в C:\Forth\fork\

и ожидаю, что команда:

forth.exe winglion\test.frt >list.txt

выдаст тот же результат

и тут начинается "склеротический балет"

Код:
Источник: winglion/test.f
В строке: 2 :19

libs/includes.frt
Ошибка: Системе не удается найти указанный путь.


папка libs\ находится в папке winglion\ как часть исходников, которые нормально компилируются в п.4 этого опуса
и ненормально в п.5, когда компиляция запускается из другой папки.

резюме:

Надо сделать так, чтобы поиск файлов для загрузки производился в первую очередь относительно папки, в которой находится исходник, "запрашивающий этот поиск".

Автор:  вопрос [ Пт мар 26, 2010 23:56 ]
Заголовок сообщения: 

Цитата:
резюме:

Надо сделать так, чтобы поиск файлов для загрузки производился в первую очередь относительно папки, в которой находится исходник, "запрашивающий этот поиск".
_________________
резюме - искать надо везде ... или пути поиска прописывать в ini

Страница 1 из 9 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/