Форум » [x]Harbour » Ошибка в функции AT() » Ответить

Ошибка в функции AT()

Softlog86: По документации : SYNTAX AT( <cSearch>, <cString>, [<nStart>], [<nEnd>] ) --> nPos ARGUMENTS <cSearch> is the substring to search for. <cString> is the searched character string. <nStart> A numeric expression indication the position of the first character in <cString> to begin the search with. It defaults to 1. <nEnd> A numeric expression indication the position of the last character in <cString> to include the search. It defaults to Len(<cString>). По факту - nStart и nEND - не обрабатывается и работает как обычный поиск подстроки в строке , возвращая номер символа ....

Ответов - 31, стр: 1 2 All

Dima: Пример в студию

Pasha: Эти 2 параметра - расширение xHarbour. В Harbour функция At совместима с Clipper, и не поддерживает это расширение. Вместо нее надо использовать функцию hb_At, в ней параметры nStart, nEnd поддерживаются

evgeny2006: Pasha пишет: Вместо нее надо использовать функцию hb_At, в ней параметры nStart, nEnd поддерживаются Скажите, пожалуйста, существует ли где перечень поддерживаемых и неподдерживаемых функций и их замена (заменяемость)?


santy: Документация по Harbour -> http://www.elektrosoft.it/tutorials/Harbour-Reference-Guide/harbour-reference-guide.htm или скачать исходники Harbour в каталоге DOC. Если надо различия между Harbour and xHarbour тогда смотрите в каталоге DOC исходников Harbour файл xhb-diff.txt. Также можна посмотреть файл hbcompat.ch в каталоге contrib\xhb\ исходников Harbour. Если вам нужно краткое описание перехода с xHarbour на Harbour то смотрите вики на сайте Xailer -> MIGRATION GUIDE TO HARBOUR

evgeny2006: santy пишет: или скачать исходники Harbour в каталоге DOC. Спасибо за рекомендации! Все это у меня есть, но беда в том, что никак не могу понять, как все это использовать! Скачал себе различные версии .chm файлов и окончательно с ними запутался. Например. понадобилась мне функция чтения строки из текствого файла. Я применил FReadStr, но в другом руководстве уже говорится, что эта функция для чтения бинарных файлов. Она работает и с текстовыми файлами, но вместо одной строки считывает файл целиком. В другом руководстве (вероятно по-новее), нашел ссылку на функцию HB_FReadLine, что вроде бы меня устраивало. Но при компиляции выдается ошибка о неразрешенной внешней ссылки _HB_FUN_HB_FREADLINE. Ясно, что необходимо подключить какую-то библиотеку! Но какую? В описании функции приводится следующая информация: Source: rtl\fnsplit.c LIB: xhb.lib DLL: xhbdll.dll И что с этим делать? Что подключать? Буду признателен за Ваши советы. Заранее спасибо

Dima: evgeny2006 пишет: Но при компиляции выдается ошибка о неразрешенной внешней ссылки _HB_FUN_HB_FREADLINE Если собирать с помощью HBMK2 то он при компиляции и сборке он подскажет какой либы не хватает. Что касается чтения строк из файла я использую HBNF. Пример тут harbour\contrib\hbnf\tests\fttext.prg

Haz: Dima пишет: И что с этим делать? Что подключать? в папке UTILS лежит Hb_lib сделал ее когда надоело искать функции по библиотекам. работать элементарно - в поиске набираем имя не найденной функции, видим в какой библиотеке она живет и подключаем ее

Dima: Haz пишет: в папке UTILS лежит Hb_lib у себя что то в упор не вижу

evgeny2006: Haz пишет: в поиске набираем имя не найденной функции, видим в какой библиотеке она живет и подключаем ее Вопрос1 А как подключить эту библиотеку? Так: #require "xhb" или так: #require "xhb.lib" И откуда подключать- из contrib?

evgeny2006: Dima пишет: Если собирать с помощью HBMK2 то он при компиляции и сборке он подскажет какой либы не хватает. К сожалению не подсказывает. Просто открывает окно с предложением ввести дополнительные библиотеки. А можно ли это сделать вручную и как? Например, у меня выдает ошибку _HB_FUN_HB_FREADLINE. Функция находится в xhb.lib. Как подключить? Кстати, IDE не сохраняет введенные данные, а набирать каждый раз заново муторно.

Dima: evgeny2006 пишет: Функция находится в xhb.lib. Как подключить? Смотря как собирать. Если с помошью HBP файла то просто указать что то типа C:\hb32mingw\contrib\xhb\xhb.hbc Если из командной строки то -lC:\hb32mingw\contrib\xhb\xhb.hbc PS У меня компилятор Mingw

Haz: Dima пишет: у себя что то в упор не вижу в поставку минигуи включена, но под BCC под MinGw я не делал

evgeny2006: Dima пишет: Смотря как собирать. Если с помошью HBP файла то просто указать что то типа C:\hb32mingw\contrib\xhb\xhb.hbc Все, что у меня есть - это компиляция и сборка (BCC) с помощью . bat файлов или через IDE. Пробовал и так, и так. Все равно облом! Получается так, что за что не возьмусь, везде или ошибки, или недоговоренность, или просто элементарное отсутствие информации.

Haz: evgeny2006 пишет: или просто элементарное отсутствие информации. Да есть же вся информация .Запустите C:\MiniGui\Batch\Compile.bat без параметров в консоли и на экран выдаст все ключи, среди них /L - link additional library т.е в вашем случае в bat нужно добавить /L xhb PS. Просмотрите compile.bat в примерах (Advanced) MiniGui, там часто ключ /L указывается PPS: "...если ничто не помогает - прочти наконец инструкцию" - т.е. не надо спешить, надо внимательно изучить примеры

Dima: Haz Вероятно у него BCC лежит не там где по умолчанию он прописан в Compile.bat из папки C:\MiniGUI\BATCH\ Значит нужно поправить строчечку if not defined MG_BCC set MG_BCC=c:\bcc55 (на папку где он у него живет)

evgeny2006: Haz пишет: "...если ничто не помогает - прочти наконец инструкцию" Вы как всегда правы! Спасибо! Вот это я и называю - отсутствие систематической информации! Где-то, что-то можно случайно найти или кто-то подскажет, также случайным образом получив информацию. Давайте, хотя бы возьмем эту тему. Я имею ввиду заголовок. С чего начилось? С несоответствия описания команды и ее возможности. Я случайно попал на эту тему, т.к практически накануне столкнулся с этой же проблемой. Я ее просто взял и обошел. Но есть вещи, которые или сложно обойти, или очень трудоемко. За что ни возьмусь, всюду меня подталкивают в низкоуровневое программирование. Для меня это не проблема - я просто этого делать не хочу!!! Haz пишет: Запустите C:\MiniGui\Batch\Compile.bat без параметров в консоли и на экран выдаст все ключи, среди них /L - link additional library За подсказку большое спасибо! Но разве это дело по мелочам выцарапывать отовсюду нужную Вам информацию!

evgeny2006: Dima пишет: Вероятно у него BCC лежит не там где по умолчанию он прописан У меня путь к BCC следующий: C:\borland\bcc55 Я подозреваю себя в излишней экономии дискового пространства. Даже сегодня было желание все стереть и установить заново. У меня вначале было также установлено hwgui. И я не помню, была ли папка "contrib" в minigui или нет. Точно помню, что эту папку копировал и вставлял в minigui. Думаю проблема может быть в этом. Вообще же я, когда я что-либо устанавливаю впервые, всегда стараюсь использовать установки по умолчанию.

Dima: evgeny2006 пишет: У меня путь к BCC следующий: C:\borland\bcc55 Отлично. А что прописано в if not defined MG_BCC set MG_BCC= в папке C:\MiniGUI\BATCH\ , файла Compile.bat ? Примеры по ходу собираются из Минигуи ?

Haz: evgeny2006 пишет: Где-то, что-то можно случайно найти Никаких случайностей нет 1. ВСЯ информация в ОТКРЫТОМ виде, начиная от исходников самого Harbour и далее, ничего выцарапывать не надо 2. проект СВОБОДНО распространяемый и помощи по нему на просторах инета - не перечитать. В этом есть и свои минусы по части систематизации, но никто не неволит, есть коммерческие разработки , можно их купить и обоснованно "делать мозги" разработчикам за свои деньги. 3. низкоуровневым программированием тут не пахнет, все на уровне НАЧАЛЬНЫХ знаний bat файлов и СТАНДАРТНЫХ функций Harbour (Clipper) если конечно вы не имеете в виду это недостойным вашего уровня и не желаете учиться принципиально. 4. В этой теме вам дали ответ чтоб не плодить новой всего из двух сообщений которые не носят познавательного характера - см п.1 5. Установочные комплекты BCC и MiniGui после их установки по умолчанию - сразу начинают работать , никакой настройки не требуется 6. Как же еще можно изучить язык , не смотря стандартные примеры и инструментарий ? Наше первое знакомство началось с вашего упрека в сторону простейшей функции Directory() в хелпе к которой черным по белому все расписано что и как работает. Вы же читать не захотели и итог мы все помним. В вашем случае, если действительно есть желание научиться - то нужно сначала читать, а потом писать критику, хотя может вас вернуться к программированию после административной работы заставили обстоятельства и вы этому отчаянно сопротивляетесь - тогда может и начинать не стоит. 7. вам тут все же отвечают и будут отвечать, Ведь вы получили ответы на все свои вопросы, возможно не моментально, но да. какое же это выцарапывание ? это и есть обучение Давайте сменим вектор от критики всего и всех к простым вопросам типа как сделать то или это, где посмотреть и т.д. ведь уже начало получаться

evgeny2006: Dima пишет: Примеры по ходу собираются из Минигуи ? Примеры собираются по ходу и нормально работают! В if not defined MG_BCC прописано: if not defined MG_BCC set MG_BCC=c:\borland\bcc55 Спасибо за участие!

evgeny2006: Haz пишет: 3. низкоуровневым программированием тут не пахнет, все на уровне НАЧАЛЬНЫХ знаний bat файлов и СТАНДАРТНЫХ функций Harbour (Clipper) Спасибо за ответ! Я очень далек от критиканства. Вероятно, я не совсем точно сформулировал то, что я имею ввиду. Когда сталкиваешься с несоответствием того, что декларируется, и тем, что в действительности существует, выходов всегда несколько: - обойти проблему - используя низкоуровневое программирование дописать то, чего не хватает. Haz пишет: ВСЯ информация в ОТКРЫТОМ виде, начиная от исходников самого Harbour и далее, ничего выцарапывать не надо Под выцарапыванием я имел ввиду, что приходится лазить по множеству источников для получения ответа на интересующий вопрос. Haz пишет: если конечно вы не имеете в виду это недостойным вашего уровня и не желаете учиться принципиально. Я всю жизнь учусь и считаю, что только учеба делает человека Человеком. Haz пишет: хотя может вас вернуться к программированию после административной работы заставили обстоятельства Ну уж не надо так защищать честь мундира! Просто мне в жизни повезло: у меня хобби совпало с профессиональной подготовкой. И я этим занимаюсь для души! Мозги у человека должны постоянно работать! Что касается ответов на вопросы, то этот форум, на мой взгляд, или самый лучший, или один из лучших!!! Так уж получилось, что начиная с конца 60-х годов, мне постоянно приходилось сталкиваться с несовершенством софта. Haz пишет: Наше первое знакомство началось с вашего упрека в сторону простейшей функции Directory() Я собственно на протяжении всех сообщений и пытаюсь выяснить, какие функции существуют и как их подключать. Haz пишет: Давайте сменим вектор от критики всего и всех Да никакой критики то и нет. Есть лишь константация фактов и раздражение по поводу отсутствия нормального описания. Кроме способа:" делай с нами, делай лучше нас", т.е обучение по образцам, существуют и другие более эффективные способы обучения!

evgeny2006: Haz пишет: как сделать то или это, где посмотреть Возрающусь к первоначальному вопросу: "Где можно найти нужную функцию и как ее подключить".

Vlad04: evgeny2006 более эффективные способы обучения Ну да ! Самый эффективный: Чтобы научиться программировать, надо программировать

Dima: evgeny2006 пишет: Возрающусь к первоначальному вопросу: "Где можно найти нужную функцию и как ее подключить". для начала тут http://www.ousob.com/ng/clguide/

evgeny2006: Haz пишет: т.е в вашем случае в bat нужно добавить /L xhb Посмотрел .bat файлы в примерах. Изменил свой .bat файл так, как вы рекомендовали. Все сразу прошло! Спасибо большое!

evgeny2006: Dima пишет: для начала тут http://www.ousob.com/ng/clguide/ Спасибо большое! Посмотрел! Полезная вещь.

Haz: evgeny2006 пишет: "Где можно найти нужную функцию и как ее подключить". 1 Где искать если мы знаем имя функции если используется BCC - то в поставке Minigui в UTILS есть HB_LIB. Эта утилита сканирует все пути с библиотеками формата *.LIB которые прописаны в INI и создает базу данных в памяти с возможностью поиска и фильтра. 2 Где искать если не знаем имя функции Только в справке по функциям языка 3 Как подключать если для линьковки используется compile.bat - добавить в него /L библиотека, где библиотека - имя файла LIB без расширения пример в C:\MiniGUI\SAMPLES\Advanced\7-Zip\Compile.bat PS. evgeny2006 пишет: Просто мне в жизни повезло: у меня хобби совпало с профессиональной подготовкой. И я этим занимаюсь для души! Мозги у человека должны постоянно работать! evgeny2006 пишет: Вы не одиноки, не поверите я работаю директором и далеко не IT направления и именно это приучило разбираться до степени максимальной подробности не важно в чем будь то работа менеджера отдела продаж, рабочего на заводе, маркетолога , конструктора и пр. И в своем хобби я тоже разбираюсь профессионально - это так к слову о "чести мундира" и о рабочих мозгах.

evgeny2006: Vlad04 пишет: Чтобы научиться программировать, надо программировать Это, конечно, истина! Но вообще-то, прежде надо уметь логически мыслить! Я полагаю, что под программированием Вы не понимаете чистое кодирование. Программирование, как таковое, состоит из следующих разделов: - словесная постановка задачи - математическая постановка задачи - разработка алгоритма, а иногда и специальных методов - кодирование (программирование) Дальше я не продолжаю, поскольку уверен, что всеэто знают.

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

Haz: Заканчиваем треп. Есть вопросы по делу - велком

evgeny2006: Haz пишет: 1 Где искать если мы знаем имя функции Спасибо за совет! Я уже попробовал. Удобная штука! Haz пишет: 3 Как подключать Вот за это огромное спасибо! Это то, что мне сейчас нужно! Что касается написания функций - то какую надо, то такую функцию и напишем. Вопрос лишь возникает в связи с экономией своего времени и принципа: "не изобретай велосипед".



полная версия страницы