Динамические массивы. Pascal

Тема в разделе "WASM.BEGINNERS", создана пользователем shock_X, 12 ноя 2008.

Статус темы:
Закрыта.
  1. PE_Kill

    PE_Kill New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    107
    wsd OK, видимо мой русский недостаточно хорошь для вас. Перефразирую.

    Корректно ли на форуме создавать топики с названием "Как создать динамический массив на C++"?

    ЗЫ Это паскаль создавался для обучения,а делфи создавалось для девелопмента.
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    PE_Kill
    в ветке LANG.C и бегинерс корректно, а дельфи ветки нет!!
    я в дельфи не вижу ни чего плохого и дал выше ссылку где это обсудить :)
    здесь только в виде исключения ;)
     
  3. PE_Kill

    PE_Kill New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    107
    Ок, теперь понятно. В высшей мере странно. Лично я удалил бы такой топик будь он на тему Delphi, C++ и прочего, где динамический массив легко юзабелен, а как работать с ним легко найти в гугле. Также для этого есть точно такие же сайты как вы дали по делфи и непонятно почему для C++ такое исключение. Возможно это от того что некоторые не понимая сути вопроса начинают искать похожие слова в правилах портала. Ну да ладно пусть это будет на их совести.
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    PE_Kill
    все остались довольны :)
    тему можно закрыть наверно
     
  5. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Заметил тенденцию. В созданных ветках, тем или иным образом касающихся Delphi первым делом появляется wsd и начинает запугивать ТС, ссылаясь при этом на Акилыча.
    Да у вас комплекс, батенька :) Если вам не нравится Delphi, то может лучше просто пройти мимо, так глядишь и база меньше захламится...

    Вы, слава Богу, не модер, чтобы это решать

    ха-ха, а сишникам не нужно?
    WASM.LANG.C -целая ветка, где сишники затыкают свои дыры.
     
  6. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Мне как то один линуксоид подобные глупости говорил, но ему простительно, он не программист.

    Очень интересно, чем
    Код (Text):
    1. a = malloc(n*sizeof(int));
    более системно, чем
    Код (Text):
    1. SetLength(A, N);
    2. GetMem(A, N * SizeOf(Integer));
     
  7. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    PE_Kill
    в ветке C/C++ в топике под вопросы начинающих - корректно. ^_^
     
  8. PE_Kill

    PE_Kill New Member

    Публикаций:
    0
    Регистрация:
    16 янв 2006
    Сообщения:
    107
    K10 да расслабься, человек не понимает чем отличается прикладное программирование от системного, просто хайлайтит слово Delphi и проверяет нет ли топикстартера в списках исключений, а то что вопрос по C++ и намного тупее чем могут задать например дельфины его не волнует, т.к. кейворда C++ не в правилах и сталобыть можно объяснить школьнику как тыкать мышкой.
     
  9. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    [offtop]
    Многим кодерам(в том числе и мне) очень не нравится убогий синтаксис Pascal, Object Pascal и т.д.
    Кроме того, я подметил одну фишку(может это и не так но у меня пока сходится): чела, изучившего C/C++ и набравшегося хотя бы небольшого опыта программинга, тянет на системный программинг и изучение asmа, в то время как изучивший pascal тянется к возне мышкой и киданию контролов на форму, т.е к delph-е.
     
  10. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    K10
    Не вздумай! Юзай array of integer, а GetMem/FreeMem и прочие малоки забудь - это средства для неудачников от программирования. Причём для неудачников, полностью с этим смирившихся. А буфер для складывания байтов вообще удобнее всего держать в AnsiString, там последовательность байт так клёво ищется функцией поиска подстроки... Я когда эту фишку просёк, у меня чуть оргазм не сделался.
     
  11. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Многим кодерам(в том числе и мне) очень не нравится извращенный синтаксис С++

    А кого куда тянет - это Delphi отношения не имеет...
     
  12. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    CyberManiac
    Я привел просто как пример различных подходов к созданию динамических массивов :)

    Так ведь SetLength работает через GetMem.
    Причем и SetLength и AnsiString и pos реализованы в RTL, а как быть если программа без RTL?
    И с GetMem я имел ввиду примерно следующее:
     
  13. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    K10
    Зато если ты забудешь Freemem - прощай, память. А с AnsiString и забывать-то нечего, само всё освободится. Хотя можно, конечено, принудительно установить нулевую длину или присвоить nil, если память надо освободить раньше.

    AnsiString - это же встроенный тип, там работа счётчика ссылок вроде бы поддерживается аж на уровне компилятора, как он может куда-то деться?
     
  14. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    Так внимательнее надо быть :))
    Помоему все интуитивно - выделил ресурс - освободил ресурс.

    Не совсем, AnsiString реализован в System.pas :
    Код (Text):
    1. type
    2.   StrRec = packed record
    3.     allocSiz: Longint;
    4.     refCnt: Longint;
    5.     length: Longint;
    6.   end;
    7.  
    8. ...
    9.  
    10. procedure       _NewAnsiString{length: Longint};
    11. asm
    12.         { ->    EAX     length                  }
    13.         { <-    EAX pointer to new string       }
    14.  
    15.         TEST    EAX,EAX
    16.         JLE     @@null
    17.         PUSH    EAX
    18.         ADD     EAX,rOff+1
    19.         CALL    _GetMem
    20.         ADD     EAX,rOff
    21.         POP     EDX
    22.         MOV     [EAX-skew].StrRec.length,EDX
    23.         MOV     [EAX-skew].StrRec.refCnt,1
    24.         MOV     byte ptr [EAX+EDX],0
    25.         RET
    26.  
    27. @@null:
    28.         XOR     EAX,EAX
    29. end;
    30.  
    31. и все остальное там же...
     
  15. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    K10
    Вломы мне :) Особенно когда всякие исключения могут возникать - я вообще считаю try...finally идеологически сомнительной конструкцией. А тут такая красивая, простая и удобная фишка как AnsiString - отчего бы её не использовать?

    Это уже реализации работы с ним вынесены в system.pas. А сам тип - именно встроенный, его существование и грамматика для работы с этим типом забиты в компилятор, воссоздать AnsiString как пользовательский тип с таким же синтаксисом средствами языка - невозможно (может быть только в Delphi 2009, и то вряд ли).
     
  16. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    мм.. т/е/ всем сказать до свидания std::string и далее по курсу и окунуться в мир удивительных возможностей делфи с её AnsiString ? логика мне непонятна.
     
  17. T800

    T800 Member

    Публикаций:
    0
    Регистрация:
    7 дек 2006
    Сообщения:
    293
    Адрес:
    Moscow
    Может и убогий, зато не такой извратный.

    Не про меня, т.к. перед паскалем освоил Z80. А x86 освоил параллельно с осноением паскаля. Я сам ненавижу формошлёпство.
    Не ассоциируйте под словом Паскаль(Делфи) ламеров.
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Я начинал с Паскаля. Потом понял, что необходимо более глубокое понимание архитектуры компа, процессора в том числе, и засел за асм. Формошлёпство хорошо знать, но ограничиваться только этим по-моему глупо, как впрочем и только сис. кодингом. Лично мне нравится не формошлёпство и не сис. кодинг, а более творческие вещи, например алгоритмы сжатия, компиляторы, 3D. А холивар это конечно глупо.

    Чего вас так тянет на строки?. Это же не более чем абстракция.
     
  19. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    varnie
    Ну да. Можешь ещё Родину продать :)

    "Ты видишь суслика?"
     
  20. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    CyberManiac
    уход от ответа, не более.
     
Статус темы:
Закрыта.