не могу получить указатель на строку

Страница 2 из 2 Предыдущий  1, 2

Предыдущая тема Следующая тема Перейти вниз

Re: не могу получить указатель на строку

Сообщение  justar в Чт Сен 11, 2008 9:34 pm

А почему не
Код:
dim as wstring r, s
r = s
? Ведь по сути - тоже самое. Но без заморочки с указателями...
PS: механизм указателей - одна из главных причин того, что язык Си считают запутанным, глючным и плохо портируемым. Указатели сильная штука, но злоупотреблять ими не следует.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: не могу получить указатель на строку

Сообщение  Eric-S в Чт Сен 11, 2008 10:13 pm

Благодарю за напоминание, оно никогда не бывает лишним.
Вопрос справедливый и требует подробного разъяснения.

Как я уже писал раньше прога у меня жутко запутанная, а я её пытаюсь систематизировать. В чём мне очень сильно помогают классы, коих у меня целая куча.

Есть у меня места, с которыми я решил разобраться "в лоб", плевав на скорость. Если я создаю переменную в классе, то деструктор должен её прибить.

А некоторые методы возвращают указатели на подстроки, а если объект к тому времени уже удалён, то указатели уже содержат адрес мусора.

В прочем немного подумав, в данном случае, я решил, что можно возвращать указатель на строки которые использует мой класс. Скорее всего я буду удалять объекты, когда уже строки будут не нужны.

Я уже сам начинаю путаться во всех ответвлениях своей проги. А в больших проектах, как обычно всплывают очень странные глюки. Даже и не поймёшь сразу, в чём здесь юмор.

Например у меня есть такой прикол, что если прогу компилить
fbc -e -ex -exx test_xml.bas
выводит результат нормально. А если же просто
fbc test_xml.bas
то она запускаеться и тутже закрываеться.


Вроде бы сейчас, тьфу-тьфу-тьфу, она у меня работает и не глючит. Думал, что уже почти дописал. Решил немного навернуть. Пришлось переделывать несколько функций. А вместо одной мелкой писать целый класс.
Ха, вот и не знаю, когда её мо жно будет считать законченной. И ведь это не полная поддержка стандарта!

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: не могу получить указатель на строку

Сообщение  justar в Пт Сен 12, 2008 9:10 am

Eric-S пишет:Как я уже писал раньше прога у меня жутко запутанная, а я её пытаюсь систематизировать

И ты пытаешься ещё больше запутать её указателями?
Есть у меня места, с которыми я решил разобраться "в лоб", плевав на скорость.
Тем более лучше обходиться без указателей. IMHO, механизм указателей придуман как раз ради скорости и если скорость не важна, то лучше обходиться без них. Тем более - когда пишешь на Бейсике, в котром для всего есть стандартые средства.

Например у меня есть такой прикол, что если прогу компилить
fbc -e -ex -exx test_xml.bas
выводит результат нормально. А если же просто
fbc test_xml.bas
то она запускаеться и тутже закрываеться.
Видно ты как то очень хитро ON ERROR применяешь... А GDB что во втором случае говорит?

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: не могу получить указатель на строку

Сообщение  Eric-S в Сб Сен 13, 2008 3:31 am

Хочеться верить, что применяя указатели я всё же экономлю память и ускоряю обработку.
Да, бэйсик имеет неплохой набор базовых функций для работы со строками, хотя с php и java ему не тягаться. Но ведь fb это компилятор, а не интерпретатор.

fb работает со строками string в ascii, а мне нужен unicode, а значит wstring. Отсюда и ещё одна причина постоянного использования указателей.

Я как-то пытался провернуть следующий
Код:

dim l as integer = 20
dim ws as wstring *l
Но это не однозначная запись, и фокус не прокатил. А вот
Код:

dim l as integer = 20
dim ws as wstring ptr
ws = allocate( l * len(wstring) )
Работает.

Я вообще-то думал о создании своей библиотеки для работы с unicode строками, типа как vb6. Чтобы были дескрипторы и куча всяких функциий. Точнее даже как класс string в java. Но потом решил, что обойдусь и так.

Хотя задумка-то неплохая! А можно вообще взять jvm и пользовать класс string, но думаю, что это будут ТОРМОЗА!



Про обработку ошибок. Хм, скорее всего не из-за on error, а из-за того что я требую в функции вывод всякой дополнительной инфы, типа erfn и ernm. Ещё не тестил, но подозреваю, что когда я отключу файл с обработчиком ошибок, ситуация измениться.

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

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: не могу получить указатель на строку

Сообщение  justar в Сб Сен 13, 2008 8:39 am

Eric-S пишет: fb работает со строками string в ascii, а мне нужен unicode, а значит wstring. Отсюда и ещё одна причина постоянного использования указателей.
В мануале написано, что fb полноценно поддерживает Unicode строки... У меня, конечно, не особые лады с английским, но я понял, что все строковые функции с Unicode работают... Или это не так?

Я вообще-то думал о создании своей библиотеки для работы с unicode строками, типа как vb6. Чтобы были дескрипторы и куча всяких функциий. Точнее даже как класс string в java. Но потом решил, что обойдусь и так. Хотя задумка-то неплохая!
Действительно неплохая - всё равно сделай, даже если сам не будешь пользоваться, другим может пригодиться.

justar

Сообщения : 135
Дата регистрации : 2008-05-12
Возраст : 43
Откуда : Кишинёв, Республика Молдоа

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: не могу получить указатель на строку

Сообщение  Eric-S в Сб Сен 13, 2008 12:11 pm

Да, fb поддерживает unicode строки, т.е. wstring.
Но они точно такие же как zstring.
А вот visual basic работает именно с unicode строками, у него они все такие.

Про библиотеку, о которой я писал выше, то это альтернативная реализация функций, в стиле java или php.
Например вместо бэйсиковских left, right, mid одна функция subStr.
Причём только для юникода, ascii строки поддерживать не буду.

Но тут стоит задуматься над другим вопросом, состыковки с другими языками и в первую очередь java. Боюсь мою библиотеку можно будет использовать только для внутреннего употребления, так как формат дескрипторов совсем другой. А во вне только wstring или zstring.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: не могу получить указатель на строку

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Страница 2 из 2 Предыдущий  1, 2

Предыдущая тема Следующая тема Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения