Имя: Пароль:
1C
 
Хотити ли вы Для Каждого Символ Из Строка?
0 Гений 1С
 
гуру
20.11.08
12:05
Т.е. чтобы не юзать:
Для Инд = 1 По СтрДлина(Строка) Цикл
 Симв = Средн(Строка, Инд);
КонецЦикла;
1 Гений 1С
 
гуру
20.11.08
12:06
Голосовалку забыл, ладно, будем так считать.
2 tsr
 
20.11.08
12:06
Уже по заголовкам тебя узнаю:)
3 IronDemon
 
20.11.08
12:07
На сколько скорость выполнения запроса вырастет?
4 bd
 
20.11.08
12:08
Сигнатура вызова не сократится, а производительность с итератором будет ниже. Лучше бы разрешили к обращение к строке как к массиву.
5 YauheniL
 
20.11.08
12:09
Хочу нормальный функционал для разюиения строк на лексеммы
И человеское представление строки как массива символов

Я, вообще, много всего хочу, но это уже просто запарило
6 Живой Ископаемый
 
20.11.08
12:10
Ну.. хотел бы вот так:
   Строка="ропропиридьиьдтитьи ";
   Для Инд = 1 По СтрДлина(Строка) Цикл
         Симв = Строка[Инд];
       Сообщить(Симв);
   КонецЦикла;

Не то чтобы совсем хотел, но было бы наверное прикольно
7 чувак
 
20.11.08
12:11
"Средн(Строка, Инд)"

А где третий параметр, уже отменили или ты указ вывел?
8 Rebelx
 
20.11.08
12:11
я угадал автора!
предлагаю создать рейтинг интуиции под заголовком - "Угадай Гения!!!"
9 Рэйв
 
20.11.08
12:14
(5)
а классы CString, LPZSTR, LPSTR , функцию strcpy() и прочий гемор  ты тоже хочешь?:)
10 Гений 1С
 
гуру
20.11.08
12:15
(8) Странно, у меня все авторы показываются в списке тем.
11 Гений 1С
 
гуру
20.11.08
12:16
(9) Нет, только для каждого.

Почему кстати скорость увеличится, она только уменьшится!
12 Живой Ископаемый
 
20.11.08
12:17
(9) Было бы прикольно, да...
Еще я хочу, чтобы например объект полнотекстовый поиск если я ищу какое-то слово, то возвращало бы мне не кусочек с первым попаданием искомого слова, и все фргаменты... Ну или чтобы это как-то можно было варьировать...
13 Ненавижу 1С
 
гуру
20.11.08
12:19
Проблема в том, что в 1С нет типа символ. Это те же строки длины 1
14 YauheniL
 
20.11.08
12:19
Кстати, в Java строка вообще прикольно раскладывется на лексеммы:

MyString.tokenize()
15 ktif
 
20.11.08
12:20
интересно было бы узнать, если автора возьмут в 1С ваятелем, чем это нам грозит? Еженедельными обновлениями платформы? 1С 9.0 к 2009 году, 1С 10.0 в 2010 и т.д.?:)
16 ДенисЧ
 
20.11.08
12:21
Кстати, я хочу пожизненный эцих с шурупами для автора..
17 Гефест
 
20.11.08
12:24
Хочу, как в делфях. Пишешь Стр[ы] и получаешь ы-тый символ строки
18 Ненавижу 1С
 
гуру
20.11.08
12:25
специально для эстета-Гения

Функция СтрокаВМассив(Стр) Экспорт

   Массив = Новый Массив(СтрДлина(Стр));
   
   Для й=1 По СтрДлина(Стр) Цикл
       Массив.Добавить(Сред(Стр,й,1));    
   КонецЦикла;
   
   Возврат Массив;

КонецФункции

Для каждого Элем Из СтрокаВМассив(Стр) Цикл
   //...
КонецЦикла;
19 Ненавижу 1С
 
гуру
20.11.08
12:25
(17) в делфях ты получаешь char
20 Ygich
 
20.11.08
12:27
(18) а не будет ли каждый проход цикла функция срабатывать?
21 Гений 1С
 
гуру
20.11.08
12:29
(18) Не годится, тормоза
22 Черный всадник
 
20.11.08
12:31
(4) В 1С цикл Для в большинстве случаев медленее цикла Для каждого
23 Ненавижу 1С
 
гуру
20.11.08
12:32
(20) не будет
но будет один лишний раз цикл на формирование массива
(21) зато красиво
24 Ненавижу 1С
 
гуру
20.11.08
12:35
(0) скажи для какой задачи это надо?
25 Рэйв
 
20.11.08
12:40
(23)Неправда ваша. Будет заходить столько раз сколько символов сначала, а потом только начнет получать элементы массива
26 luns
 
20.11.08
12:41
(24) Задача проста: напомнить о себе...
27 Гений 1С
 
гуру
20.11.08
12:49
(26) дятел. мне за 1с обидно. ;-)
28 Ненавижу 1С
 
гуру
20.11.08
12:49
(25) а я про что?
30 bd
 
20.11.08
12:50
(22) Объектная модель 1C - это COM, не? Для For Each будет создан IEnumXXX и возвращён указатель на него, а доступ к элементам массива - это примитивная и быстрая адресная арифметика.
31 НЕА123
 
20.11.08
12:51
(0) офф
интересно, а что быстрее?

Для Инд = 1 По СтрДлина(Строка) Цикл
 Симв = Средн(Строка, Инд);
КонецЦикла;


Для Инд = 1 По СтрДлина(Строка) Цикл
 Симв = КодСимвола(Строка, Инд);
КонецЦикла;
32 Рэйв
 
20.11.08
12:58
(28) Ну может я тебя не так понял:)
33 Ненавижу 1С
 
гуру
20.11.08
13:06
(32) имелось ввиду, что сначала выполняется функция, там в цикле обходятся символы и заносятся в массив, потом цикл по массиву. Вызов функции только один раз
34 Черный всадник
 
20.11.08
13:08
(30) Для массива вероятнее всего это верно. Но если ты потестируешь ТЗ, то думаю будешь удивлен. Цикл Для каждого пробегает ТЗ в два раза быстрее, чем Для.
35 bd
 
20.11.08
13:15
(34) ТЗ - гибрид массива, списка и хэша, а от универсального контейнера глупо требовать высокой производительности по определению  :) Работает и шут с ней
36 Гений 1С
 
гуру
20.11.08
13:32
(30) Что за чушь? Это проблема компилятора, не будет создано никакого COM
37 Ненавижу 1С
 
гуру
20.11.08
13:43
(36) будет создан, потому что этот объект может передан COM-клиенту
38 beholder
 
20.11.08
14:00
ГЫ. я тоже угадал афтора
39 nop
 
20.11.08
14:03
(0) Ерунда. Хочу иметь доступ к символам - как к элементам массива. И вообще хочу указатели и возможность вручную управлять выделением памяти и добавлять в Конфиграторе новые таблицы в БазуДанных, переопределять стандартные хранимые процедуры, управлять индексированием, нормальных блокировок. Хочу создавать элементы интерфейса программно и полностью управлять ими в run-time. Хочу нормальное ООП с наследование, перегружаемыми функциями, метаклассами.
Есть ещё вопросы?
40 Гений 1С
 
гуру
20.11.08
15:48
(39) С этими вопросами не к 1с. ;-)
41 Медвед1Сник
 
20.11.08
15:52
(0) Не хочу. Строка это не коллекция значений. Она сама логически одно значение. Хотя физически это массив. Но у нас не Си а 1эска.
42 Медвед1Сник
 
20.11.08
15:53
+ И потом строка это элементарный тип а предложение в (0) превращает ее в неэлементарный. Уже нельзя будет записать А = "АБВГД";
43 Fragster
 
гуру
20.11.08
15:53
(0) а как тебе v8: Посвящается Гению1С ? я хочу доступ к строке как к массиву - но и Сред() хватает...
44 nop
 
20.11.08
16:07
(42) нет ничего невозможного
45 Гений 1С
 
гуру
20.11.08
18:12
(42) почему нельзя будет? Обоснуй. Это всего лишь конструкция обхода, она не превращает строку в массив.
46 Медвед1Сник
 
20.11.08
19:24
(45) Если не элементарный тип то нельзя непосредственно его задавать литералами. Надо будет писать что-то вроде А = Новый Строка("АБВГД");
Если оставаться в рамках общих принципов и не множить эклектику :)
47 Гений 1С
 
гуру
20.11.08
20:20
(46) а если множить эклектике?
48 Гений 1С
 
гуру
20.11.08
20:20
Для строк цикл "Для каждого" должен работать по другому
49 Медвед1Сник
 
21.11.08
13:16
(47) Можно и множить. Но я бы лучше сделал какой-то оператор (или функцию) преобразования Строка в Массив. Или как-то реализовал бы это по умолчанию.
Можно например так :

А = "АБВГД";

Для Каждого Буква Из Массив("АБВГД") Цикл
   Сообщить(Буква);
КонецЦикла;

Функцию Массив(Строка) я думаю ты реализуешь сам. :)
50 YauheniL
 
21.11.08
13:26
Модераторы, исправьте ошибку в первом слове топика!
51 Гений 1С
 
гуру
21.11.08
14:04
(49) Не надо в массив. Массив дико напрягает память по сравнению с строкой
52 Serg_1960
 
21.11.08
14:44
Массив не нравится? На, возьми список :)

Функция СписокСимволов(Строка)
   Список = Новый СписокЗначений();
   Для Позиция = 1 По СтрДлина(Строка) Цикл
       Список.Добавить(Сред(Строка,Позиция,1));
   КонецЦикла;
   Возврат Список
КонецФункции
53 MSensey
 
21.11.08
15:24
Пора бы завести секцию "Гений:1С"