· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.A&O —› Замечательный Стринг

<< . 1 . 2 . 3 . 4 . >>

Посл.отвђт Сообщенiе


Дата: Окт 22, 2003 19:55:35

Quantum

Я ж те говорил - SC - вчерашний день и предлагал DevPartner for VB. Надо будет самому, кстати, поставить...

Переносимость на другие платформы.

А вот это мне уже интересно. Как так? Кто перенес? Когда? Где?


Дата: Окт 22, 2003 20:02:53

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

Не стыдно гнать на Edmondа да? %)))

На те, муж великими делами славный..

string1 db 'kzkzkzkzkzkz',0
.....
string2 db 'dfsfsdsfs',0

Ну и куда ты ДОПИСЫВАТЬ БУДЕШЬ!!!!

У космическое пространство? %)))

Лучше посмотри на листинг VS7.0/ctrl/strcat.asm

;;==============================================

Quantum
Ну ладно :)))
В кратсе что помню

[header][data][tail]

[data] -- строка
[head] -- голова (там много чего...)
[tail] -- часто равно 0... но не факт.

А теперь фишка1

Указатель указывает на..... [data]
%)))
Значит строка C-совместима

2. Фишка2
Поддерка всех форматов (даже ОEM описывается)

Формат head сложный, многовариантный.
Зависит от множества факторов.

Например:

Байты в head нумеруются наоборот. от старшего к младшему

Например если бит 0 в младшем байте по адресу указатель - 1 = 0,
значит в следующих 7 битах -- длинна строки
Иначе -- это байт флагов.

Ну и так далее..

Катаю уже статью + LIB


Дата: Окт 22, 2003 20:05:42

volodya
А мож мой подойдёт. Он в принципе тож переносим..
Там можно задавать длинну одно символа..
И всё такое...


Дата: Окт 22, 2003 20:07:00

чтобы гнать указатель и счетчик вдоль всей строки

Да, что касается этого, я покажу код. Выйгрышь не велик..


Дата: Окт 22, 2003 20:20:38

volodya
Я ж те говорил - SC - вчерашний день и предлагал DevPartner for VB
Так я и не спорю.

А вот это мне уже интересно. Как так? Кто перенес? Когда? Где?
В самом MSDN упоминают про Mac, но идея в том, что не на всех машинах байт имеет 8 бит и существуют big и little endian. Так вот, safe array может адаптироваться под все эти ньюансы (формат by Edmond, вроде, тоже). С другой стороны, кто, когда и где перенёс, то это, скорее всего, сам Билл Гейц, но во сне.


Дата: Окт 22, 2003 20:31:52

Edmond
Не стыдно гнать на Edmondа да? %)))

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

Что до остального, то ты, как всегда, меня не понял. Твой вариант:
string1 db 'kzkzkzkzkzkz',0 
..... 
string2 db 'dfsfsdsfs',0 


Здесь, действительно дописывать некуда! А тебе, вместо того, чтобы меня носом в доки тыкать, ткнись-ка туда сам:
*Purpose:
*       Concatenates src onto the end of dest.  Assumes enough
*       space in dest.


Съел? А если строка завершена нулем, то смотри, сколько действий надо сделать:
        while( *cp )
                cp++;                   /* find end of dst */

        while( *cp++ = *src++ ) ;       /* Copy src to end of dst */

        return( dst );                  /* return dst */


А если длина строки прописана в начале (как ты и предлагаешь в своем формате, хотя и он давно известен), то пункт 1 снимается.


Дата: Окт 22, 2003 20:33:12

Quantum
сам Билл Гейц, но во сне

Я в голове у Гейтса не копался, но, полагаю, он это в кошмарах видит :)


Дата: Окт 22, 2003 22:22:20

хм.. а чем блин уважаемых не устраивает std::basic_string который как хочешь так и делай? -)
хоть char туда, хоть wide_char ...
и резервирование есть (25%) от длинны при создании. Следовательно количество реаллокаций падает.
и c_str() есть - который С строка.


Дата: Окт 22, 2003 23:03:33

rst

Ты вводишь сюда противоречие, которого не существовало изначально. Всех все устраивает.


Дата: Окт 23, 2003 14:31:22

volodya
Родной мой кофейничек, да как я могу на тебя, архитектора и алгоритмизатора, гнать-то! Я ж ваще биохимик позорный. Ни биохимии не знаю, ни программирования. Непонятно что.

Ну всё, всё здаюсь.. Руки вверх.. Ноги тоже %))

Съел? А если строка завершена нулем, то смотри, сколько действий надо сделать:

Ням, ням.

А такое видал (код неоптимизированный просто для ДимонСтрации):

1. Для С-строки

@@:
mov  al,[esi]
test al,al
mov [edi],al
jne @B



Для длинны

@@:
mov  al,[esi+ecx]
dec  ecx
mov [edi+ecx],al
jne @B



Да, я не спорю, когда по 4 копируешь и по 8 (MMX)
В алгоритме с счётчиком на три команды меньше..
НО НА ТРИ!!!!!!!!!!!!!!!!!!!!

Так что СЪЕШЬ ТЕПЕРЬ ТЫ %)))


Дата: Окт 23, 2003 14:35:54

и резервирование есть (25%) от длинны при создании

О!!!
Спасибо, хорошая мысля!!!


Дата: Окт 23, 2003 14:39:29

Edmond
/usr/local/include/string
там вообще-то все есть -)


Дата: Окт 23, 2003 15:19:09

rst
У меня нет Юниха %))
А мож сюда кидануть %))


Дата: Окт 23, 2003 15:43:26


Дата: Окт 23, 2003 18:57:51

Так что СЪЕШЬ ТЕПЕРЬ ТЫ %)))

Невкусно! И ни фига мне по тем клочкам непонятно! Длину в случае дельфийской строки я определю мнгновенно, и не нужно мне цикла с jxx, который будет неверно предсказан ;)

<< . 1 . 2 . 3 . 4 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.060