Вверх ↑
Этот топик читают: Гость
Ответов: 3349
Рейтинг: 233
#1: 2010-07-02 04:33:55 ЛС | профиль | цитата
Разбивает строку по позиции.
Сильно не пинать, учусь делать компоненты, а это мой первый.
карма: 1

0
файлы: 1strpospart.rar [3.6KB] [251]
vip
#1.1контекстная реклама от партнеров
Ответов: 16884
Рейтинг: 1239
#2: 2010-07-02 09:30:27 ЛС | профиль | цитата
Ivann писал(а):
Copy(str,0,position);
любой учебник Pascal писал(а):
Строка - это упакованый массив, компоненты которого имеют тип char и индекс имеет нижнюю границу равную 1
Откудв взял 0 ?
(Будешь писать в С - там с 0)
Ivann, надеюсь, это не сильно.
Остальное не смотрел.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Ivann
Ответов: 3349
Рейтинг: 233
#3: 2010-07-02 09:42:06 ЛС | профиль | цитата
Tad, у меня привычка, все начинать с 0
Tad писал(а):
Ivann, надеюсь, это не сильно.
Остальное не смотрел.

Это ты моё незнание нашел
карма: 1

0
файлы: 1strpospart.rar [3.6KB] [259]
Ответов: 16884
Рейтинг: 1239
#4: 2010-07-02 09:52:43 ЛС | профиль | цитата
Ivann писал(а):
у меня привычка, все начинать с 0
Есть привычки. Есть правила.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3349
Рейтинг: 233
#5: 2010-07-02 09:54:20 ЛС | профиль | цитата
Tad, странно с 0 тоже работало
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#6: 2010-07-02 10:24:42 ЛС | профиль | цитата
Ivann, ничего странного.
В стандартной функции Copy есть строчка:

#pas
.......
If position <= 0 then position := 1;
.......
которую программисты называют " защита от дурака" - вот она и работала.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 4697
Рейтинг: 426
#7: 2010-07-02 12:55:00 ЛС | профиль | цитата
После беглого осмотра есть следующие замечания:
1. Прототип компонента нерабочий (не найден метод doSplit).
2. Свойство Str здесь полностью лишнее, если заранее известна строка, которую надо разделять, гораздо лучше (и со стороны готовой программы, и со стороны разработчика) разделить ее по нужной позиции старым способом (с помощью мозгов).
3. Вот эта часть кода не совсем верна логически (то же самое во втором методе doPart) :
#pas
begin
lef:=Copy(str,1,position);
_hi_OnEvent(_event_onLeft, lef);
righ:=Copy(str,position,len - position);
_hi_OnEvent(_event_onRight, righ);
_hi_OnEvent(_event_onPart, ');
end;
Сначала надо присвоить значение всем переменным,а потом вызывать событие, чтобы не было вот такого, как в этой схеме: code_19169.txt
4. Неверно разбивается строка при свойстве Mode = Position, в примере твоем она не "захватывает" последнюю скобку в строке для выдачи в поток правую часть, а так же в твоем примере при том же значении св-ва Mode в onLeft в конце выдается ":", а в onRight в начале ":" - повторение символа-разделителя. Все эти ошибки - неверное определение начала и конца нужной части

P.S: если не сможешь сам поправить, обращайся, подтолкну в нужном направлении
карма: 10
0
файлы: 1code_19169.txt [1.8KB] [377]
Ответов: 3349
Рейтинг: 233
#8: 2010-07-02 12:55:04 ЛС | профиль | цитата
Tad, ясно, спасибо тебе
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#9: 2010-07-02 13:42:54 ЛС | профиль | цитата
Ivann, вот эта строка кода, которую ты применил - тоже "защита от дурака"

#pas
if position >= len then exit else
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 4697
Рейтинг: 426
#10: 2010-07-02 13:48:43 ЛС | профиль | цитата
Ого, а я и не знал, что у делфи-компилятора есть такая особенность: я распаковал архив Ivann-а, установил компонент,запустил, нашел ошибку, нажал Ctrl+F на компоненте, исправил код на верный, нажимаю кнопку сохранить, иду к кнопке "Run" в схеме, запускаю - без изменений, как будто я код и не правил, потом выяснилось: я удалил файл StrPosPart.pas из папки, где лежит пример Example.sha (который я и запускал), опять жму "Run" - все работает
карма: 10
0
Ответов: 16884
Рейтинг: 1239
#11: 2010-07-02 14:01:57 ЛС | профиль | цитата
Assasin, интересно, почему грешишь на делфи-компилятор ? Тоже замечал такие приколы.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 4697
Рейтинг: 426
#12: 2010-07-02 14:02:28 ЛС | профиль | цитата
Tad писал(а):
Assasin, интересно, почему грешишь на делфи-компилятор

А с FPC у меня все ок
карма: 10
0
Ответов: 16884
Рейтинг: 1239
#13: 2010-07-02 14:17:42 ЛС | профиль | цитата
Assasin писал(а):
потом выяснилось: я удалил файл StrPosPart.pas из папки, где лежит пример Example.sha (который я и запускал

"я удалил" или "сам удалился" ?
У меня сама и тихо, без вопросов, удалилась папка ElementsDelphicodeSQliteObj
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26069
Рейтинг: 2121
#14: 2010-07-02 14:29:08 ЛС | профиль | цитата
Assasin, строку компиляции надо нормальную прописывать, а не ту, которая читает файлы компонентов из папки проектов. И не причем тут компилятор, коли сами виноваты
------------ Дoбавленo в 14.29:
Вот моя строка компиляции, которая всегда читает компоненты из ситемной папки пакета Windows. Просто, я попадался на эту фичу не раз и поправил строку

"%fname%" "-U%upath%." -DSQLITE_OBJ -Q -$O+ "-E%opath%

-DSQLITE_OBJ можно выкинуть, если не работаете с объектыми модулями SQLite
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#15: 2010-07-02 14:46:42 ЛС | профиль | цитата
nesco, вот моё
а папочка, при правке схемы (sha-файла), тю-тю .
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1do.png [4.5KB] [649]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)