Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 | 3 |

 

  Вопрос: Двумерный динамический массив Добавлено: 01.10.09 15:21  

Автор вопроса:  fifa36

Ответить

  Ответы Всего ответов: 45  

Номер ответа: 16
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #16 Добавлено: 06.10.09 12:54
У меня всегда все получалось с ReDim, и код работал.

Если у тебя работает, я могу только порадоваться.

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

Я склонен больше верить документации

If you use the Preserve keyword, you can resize only the last array dimension and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array.

Ответить

Номер ответа: 17
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #17
Добавлено: 06.10.09 13:46
Я склонен больше верить документации

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

Ответить

Номер ответа: 18
Автор ответа:
 fifa36



Вопросов: 33
Ответов: 116
 Профиль | | #18 Добавлено: 06.10.09 13:51
А что в .NET можно любую размерность массива менять?

Ответить

Номер ответа: 19
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #19 Добавлено: 06.10.09 14:05
Яж сказал без обид?
Както не к лицу умному дяде полиглоту обижаться.
Если задача изменять размерность массива в цикле с заранее известным количеством итераций, то задача поставлена неправильно!
Ну видимо я зря использую такие умные слова.
Умному человеку для быстрого и простого получения необходимого результата из базы ябы посоветовал использовать Join (SQL), а тебе не осмелюсь чтото советовать.

Ответить

Номер ответа: 20
Автор ответа:
 fifa36



Вопросов: 33
Ответов: 116
 Профиль | | #20 Добавлено: 06.10.09 14:15
Smith перед тобой никто задач не ставил, единственный вопрос был можно ли изменять обе размерности массива. Если ты советуешь то главное не надо умничать. Иначе больше похоже на самореализацию что больше негде.

Умному человеку для быстрого и простого получения необходимого результата из базы ябы посоветовал использовать Join (SQL), а тебе не осмелюсь чтото советовать.


При получении информации из базы иногда требуется предварительная обработка получаемой информации, которую средствами SQL выполнить невозможно.

Ответить

Номер ответа: 21
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #21 Добавлено: 06.10.09 14:23
Москвин хватит выпендриваться :-D, хочешь научить нас правильно работать с ReDim Preserve?
Так мы заждались откровения :), выкладывай свой правильный код.
И хватит уже разоблачать Артема, все и так знают зачем он здесь ;)

Ответить

Номер ответа: 22
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #22 Добавлено: 06.10.09 14:28
Упс, а ты оказывается знаешь все средства SQL, ну ещё раз извини я ведь самоутверждаюсь отвечая тебе :)

Ответить

Номер ответа: 23
Автор ответа:
 fifa36



Вопросов: 33
Ответов: 116
 Профиль | | #23 Добавлено: 06.10.09 14:36
Ты уже дал два совета 1. заранее определить число строк рекордсета 2. использовать SQL(какие бы ни были средства) и все недельные. Не говоря о том, что вопрос изначальный был совсем в другом.

Ответить

Номер ответа: 24
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #24 Добавлено: 06.10.09 15:02
вопрос изначальный был совсем в другом.
:) Изначальный вопрос здесь забывается примерно к концу первой страницы.:)

Ответить

Номер ответа: 25
Автор ответа:
 fifa36



Вопросов: 33
Ответов: 116
 Профиль | | #25 Добавлено: 06.10.09 15:08
это точно, а кто знает что первично материя или сознание а то в справке VB не нашел?

Ответить

Номер ответа: 26
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #26 Добавлено: 06.10.09 15:47
Ну конечно я виноват, что отнесся серьезно и стал отвечать, прикольная ведь была тема нетбы молча почитывать иногда :).
Тыж уже признал, что вопрос некорректен, зачем опять тыкать изначальным вопросом?
На свой вопрос ты получил краткий, но ёмкий 1-й ответ.
Зачем мне цитировать Андрея, если ты сам его уже цитировал в 6-м посте?
Кстати, "делать через пень колоду" означает "неделать нихрена", видимо ты хотел сказать "приходится делать через жопу" :-D, стеснительность прекрасная черта, жаль с возрастом проходит :).
Задачи ты ставишь тока перед самим собой, извини в третий раз, что указал тебе на ошибочность твоей задачи.
Мой первый совет ты понял неправильно и почемуто обвиняешь меня в том, что сам уже сделал.
Я понимал, что совет использовать SQL в аксэсе для тебя недельный, поэтому и адресовал его не тебе.
В четвертый раз извиняясь за едкость всей правды, что написал, я обещаю тут ничего больше не советовать.
Я всеголишь хочу получить от Москвина урок правильного использования Редим Пресерва, если с его стороны это небыло простой попыткой дискредитировать Артема.
VBD если так, то это лишнее, в самом деле.

Ответить

Номер ответа: 27
Автор ответа:
 fifa36



Вопросов: 33
Ответов: 116
 Профиль | | #27 Добавлено: 06.10.09 16:21
 Smith ты умник умников, ты уже придумал что я с БД аксесс работаю. Бывают и другие СУБД. Я работаю с Oracle. Но это вообщем показывает что ты занимаешься болтовней, выделываешься. Естественно я использую SQL, но ты видимо хотя выпендриться сказал мне про SQL чтобы вместо 2-х рекордсетов использовать один, надо сделать объединение в запросе, я тебе ответил что прежде чем сделать объединение нужно обработать записи одной из таблиц. Обработку надо делать в коде программы, в которой есть финансовые функции, которых нет в SQL.
Еще раз на счет твоих умных советов: ты также посоветовал что заранее определить число строк рекордсета, правельнее нежеле делать так как я делаю построчно определяя. Тут ты тоже лажанулся. Это не оптимально, загружает память сервера.
И что самое главное ты так этого и не понял, ты стал придираться к приведенному коду не касательно основного вопроса, то есть просто чтобы вывалить свои знания на обозрение.

Ответить

Номер ответа: 28
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #28 Добавлено: 06.10.09 16:47
Т.е. ты признаешь, что я обнаруживаю знание, а не незнание, ну спасибо :-P

Ответить

Номер ответа: 29
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #29 Добавлено: 06.10.09 19:47
fifa36 пишет:
 Прежде чем можно узнать сколько записей нужно пройти курсором все записи рекордсета, загрузив таким образом их в оперативную память, ты считаешь это оптимальным решением?

На самом деле сложно сказать, я так понимаю, ты выложил только часть кода, а не весь, поэтому мне непросто судить о том что ты делаешь...

Я правильно понимаю что для каждого элемента из рекордсета rst ты заново запускаешь рекордсет rst2?
Возможно, эфективнее содержимое rst2 отсоединить от источника данных в память (не могу сказать как в VB6 это делается) и проходить уже по массиву в памяти.
Это будет быстрее (впрочем в зависимости от размера rst2 и от сложности запроса который в нем лежит).

fifa36 пишет:
 а именно в возможости менять все границы многомерного массива.

Изменять все границы многомерного массива с сохранением данных нельзя. Такой возможности нет в VB6. Я гарантирую это.
Впрочем, если пан VBD проведет мастер-класс и покажет как это делать, то, возможно, мне прийдется отозвать мою гарантию.

Ответить

Номер ответа: 30
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #30
Добавлено: 06.10.09 20:07
Впрочем, если пан VBD проведет мастер-класс и покажет как это делать, то, возможно, мне прийдется отозвать мою гарантию.

Ты уже у нас гарантии раздаешь? :)

Под
Изменять все границы многомерного массива с сохранением данных нельзя.
скорее всего низкоуровневое увеличение размера массива без бонусов. Такого, не спорю, в VB6 нет (встроенного). ReDim PReserve создает новый увеличенный массив, копирует в него данный и удаляет его (данный). Получаем увеличение массива. В VB6 с этим можно не запариваться и считать, что он увеличивает (или уменьшает) размер массива:

  1.  
  2.  
  3. Dim b() as long
  4. Redim b(0) as long
  5. b(0) = 1
  6. ReDim PReserve b(1)
  7. b(1) = 2

Ответить

Страница: 1 | 2 | 3 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам