![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
Надо создавать массив, но неисвестно его количество. Т.е. количество элементов будет наращиваться по одному и неизвестно конечное. Я бы, конечно мог, ограничить его 1000 но просто его надо будет очищать, причем очень часто. И если в массиве будет один элемент, то нецелессообразно гнать цикл до 1000. Я понимаю, что нужны указатели, но плохо их знаю. Можите привести пример заполнения массива?
|
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Массив будет от 0 до Length(struct_name)-1 Это сообщение отредактировал(а) Poseidon - 5.4.2006, 00:58 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
ВОТ СПАСИБО. Я даже не ожидал, что обойдётся без указателей. СПАСИБО А можно ещё вопрос: Как string запихнуть в буфер? (Вы просто так быстро ответили :-) ) |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Один топик - один вопрос!
Следуй этому правилу ;) PS Как я понимаю "буфер" - это буфер обмена. Добавь в uses Clipbrd и вот так добавляй
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
СПАСИБО
Тогда вопросов больше не имею. Ещё раз спасибо. {Close Theme} |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Хотелось бы сделать небольшое уточнение про заполнение массива, т.к. кол-во элементов в массиве перед выполнением цикла нам известно заранее, то нет необходимости увеличивать размер массива в цикле (это очень не эффективно на больших массивах), лучше выставить требуемый размер массива до цикла:
Это сообщение отредактировал(а) Alex - 5.4.2006, 08:39 -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Marriage |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 842 Регистрация: 4.5.2004 Где: Таганрог Репутация: нет Всего: 2 |
И обращаться как sl.Strings[0] ,sl.Strings[1] по индексам. При чем можешь сразу же сохранить фсе это в файл sl.SaveToFile или загрузить sl.LoadFromFile -------------------- Praemonitus, praemunitus |
|||
|
||||
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
Я понимаю, что лучше выносить функции за цикл.
SetLength(struct_name, col+1); Но в любом случае у меня получится в цикле. Дело в том что у меня цикл в цикле. Но вот опять возник вопрос по теме. А как мне очищать массив, чтобы количество элементов стало равно 0?
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
struct_name := Nil; для строки struct_name[i] := ''; Добавлено @ 12:51 Вообще странный цикл
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| ~FoX~ |
|
||||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
НЕТ! 1. i:=i -> incompotibe types ....... 2. dec(i) -> Assigment to FOR-Loop variable (i) 3.
|
||||||
|
|||||||
| Moskalev |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 2.4.2006 Где: Академгородок Репутация: нет Всего: нет |
Я сам всегда делал:
но думаю, что это не правильно (не совсем правильно по нормам языка, ведь есть nil) |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Moskalev,
Как задача поставлена, так ее и решают! Добавлено @ 13:06 только вот я не понял, а чем собствено TStrings, TStringList не устраивает, зачем велосипед то изобритать? |
|||
|
||||
| Nic442 |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
Romikgy
А как передавать массив в функцию, и в функции добавлять к нему элементы?
|
||||||||
|
|||||||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
В функцию ты не можешь передавать массив, только указатель на него....
|
|||
|
||||
| Демо |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Ну почему, по ссылке массив можно передать и работать с ним:
-------------------- |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Демо,
а это разве не тоже самое что передавать указатель -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
-------------------- |
|||
|
||||
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
|
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
~FoX~,
Кстати, и возвращать массив из функции тоже можно. -------------------- |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
А что такое var???? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
попробуй, узнаешь , что намного проще чем тебе изобретать велосипед -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Демо, Как же нет, при передаче через var парамет реально передается ссылка (т.е. указатель) на эту переменную, просто доступ к нему осуществляется как к уже к разименованному, а по сути это все одно и тоже.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
~FoX~, procedure FillStrArray(var sa: TStrArray; Size: Integer);
это ? если да то это обозначает что переменая может изменится и в измененом состоянии вернутся в основную программу -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
||||
|
||||
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
Так мой код нормальный? В основную программу функция ничего не долна возвращать. Она должна принимать статический массив, и если что-то находит то дополнять его и осуществлять с ним нужные операции.
|
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
~FoX~, ну и что я не правильно сказал?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
alexeis1,
Разименуй плиз здесь и выполни те же функции, что и в FillStrArray выше:
-------------------- |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
не нормальный! Во первых ругнется компилятор на то, что нет результата у функции. Во вторых не обьявлена hight_mas. В-третьих послушай совета Алекса и выдели память под массив до начала его заполнения, а не в цикле.
Это так, при первом осмотре... Это сообщение отредактировал(а) Poseidon - 5.4.2006, 14:55 -------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 13 Всего: 68 |
Попробуй откомпили и посмотри.....что скажет компилятор..... Добавлено @ 14:59 ой, не успел |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 30 Всего: 50 |
Параметр передается по-ссылке, но ссылка и указатель - суть разные вещи. Ссылка - адрес. Указатель - переменная. т.е. Указатель может содержать ссылку, но не наоборот, и тождества между ними нет. PS. Забыл добавить - это мое мнение-) Это сообщение отредактировал(а) Демо - 5.4.2006, 15:43 -------------------- |
|||
|
||||
| Yanis |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Так же это можно сделать ещё двумя способами:
Здесь нет ничего странного. Delphi (да и Pascal кажется тоже) позволяет использовать циклы "наоборот", т.е. с уменьшением счётчика. А на месте слова down должно в твоём случае быть downto Интересно было бы узнать откуда у вас такая информация, потому что у меня есть подозрения, что ты неправ.
Как я уже сказал можно и SetLength использовать.
Демо прав. Ссылка это не тоже самое, что и указатель. Кто хочет попорить, прошу. Можно возвращать ссылку или указатель!
Добавлено @ 16:01 2 Демо Блин опередил Добавлено @ 16:02 Редиска Это сообщение отредактировал(а) Yanis - 5.4.2006, 16:02 |
||||||||||
|
|||||||||||
| Nic442 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 5.4.2006 Где: Советский Союз Репутация: нет Всего: нет |
Буду исправлять код. Будут вопросы обязательно напишу.
Это исправлю. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |