1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.045
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Andreus778, никогда так не делай:
     
    Andreus778 нравится это.
  4. Andreus778

    Andreus778

    Регистрация:
    30 июн 2014
    Сообщения:
    20
    Borland C++ 3.1

    ---------- Сообщение добавлено в 13:39 ---------- Предыдущее сообщение размещено в 13:36 ----------

    Я так и не делаю. Создал папку "ALLEGRO" и в неё скинул все файлы allegro 1.02. Как директории прописывать не пойму. Например, там "C:\BORLANDC\INCLUDE". Как мне прописать ещё одну директорию к "C:\BORLANDC\ALLEGRO"?
     
  5. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Такое окно должно быть:
    77109dbf5d5266ffb1e43725437b3a94.jpg
     
    Andreus778 нравится это.
  6. Andreus778

    Andreus778

    Регистрация:
    30 июн 2014
    Сообщения:
    20
    Прописал. При комплияции нет Варнингов и Ерроров, но когда кликаю Build All или Run, то вылезают 4 такие ошибки.
    26c40cc24a300324812b13432038ad95.png
     
  7. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    В настройках проекта надо указать либы в которых есть эти функции.
     
    Andreus778 нравится это.
  8. Andreus778

    Andreus778

    Регистрация:
    30 июн 2014
    Сообщения:
    20
    Как дойти до настроек проекта?
     
  9. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    А хрен его знает. Судя по твоему скрину - в пункте меню Project. Там что-нить типа Linker settings или Link libraries.
    Ты пойми принцип:
    Есть компилятор, он преобразует имеющийся исходный код в объектные файлы. В include есть h файлы, в них, грубо говоря, список функций, про которые компилятор должен думать, что они есть.
    Есть линковщик, он соединяет все объектные файлы в один исполняемый или библиотеку. При этом он проверяет, а где, собсна, двочиный код всех использующихся функций? Если это твой код - всё ок, если это Аллегра - ты должен указать линковщику где искать эти функции, т.е. путь к либам и сами файлы библиотек.
    Надо чётко понимать разницу между ошибками компилятора и ошибками линковщика.
     
    Последнее редактирование: 7 авг 2014
    Andreus778 нравится это.
  10. Andreus778

    Andreus778

    Регистрация:
    30 июн 2014
    Сообщения:
    20
    Короче, сменил компилятор на Ваткомовский. (DOSBox юзаю). Та же проблема, но на этот раз заголовочный скинул в C:\WATCOM\H. Эти долбаные андефайнед...
    Он же находит ALLEGRO.H, вернее не ругается, что его нету.

    cfb11c3feaeb78230ac6db347282ee60.png

    Я понял, что ругается Линкер, а не Компилятор. Как быть с этим Линкером?
     
    Последнее редактирование: 7 авг 2014
  11. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Нужно указывать не только хидеры, но и либы.
    Да вот вроде выше сказали.
     
  12. Andreus778

    Andreus778

    Регистрация:
    30 июн 2014
    Сообщения:
    20
    Либы это файлы .LIB? Но тут такого дела нету.

    351d161541de1f107bcad2e0c4b558e0.png

    ---------- Сообщение добавлено в 21:36 ---------- Предыдущее сообщение размещено в 21:23 ----------

    А как пути к либам прописать в батнике? Просто покажу туда же(C:\WATCOM\ALLEGRO).
     
  13. ThisSuXX

    ThisSuXX

    Регистрация:
    2 дек 2005
    Сообщения:
    934
    Скомпилируй библиотеку из исходников. Какие именно файлы нужны для этого посмотри в readme.txt.
     
    Andreus778 нравится это.
  14. netsky2004

    netsky2004

    Регистрация:
    31 янв 2007
    Сообщения:
    1.443
    В Delphi есть функция проверки запущенного приложения чтобы не дать ему запуститься поверх себя. Скрипт перед запуском формы:
    var result :integer;
    -----------------
    result:=FindWindow('TForm1',pchar(Application.Title));
    if result<>0 then begin
    Application.MessageBox('Программа уже загружена',
    pchar(Application.Title),mb_iconwarning);
    Halt(1);
    Но я уже с морально устаревшим Delphi больше не работаю, уже перешел на C# и к сожалению я там не нашел функции типа "FindWindow". Можно сделать и в С# чтобы программа не смогла сама себя запустить и чтобы программу нельзя было запустить при её наличии в работе
     
  15. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Лучше всего будет сразу настроить переменные окружения:
    Код:
     - INCLUDE  - points to directories containing header files used by the
                  C/C++ compilers
     - LIB      - points to directories containing library files; note that
                  Open Watcom linker is able to locate Open Watcom runtime
                  libraries without this variable
    (readme.txt)

    ---------- Сообщение добавлено в 02:24 ---------- Предыдущее сообщение размещено в 02:21 ----------

    Код:
            [DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
            public static extern IntPtr FindWindow(string lpClassName,
                string lpWindowName);
    Вот как-то так. Как и с остальными функциями WinAPI.
     
  16. netsky2004

    netsky2004

    Регистрация:
    31 янв 2007
    Сообщения:
    1.443
    Эти СССАБАКИ разработчики Visual Studio C# сделали так что переменные присвоены в Program.cs после запуска приложения Application.Run() и при запуске процедуры private void Form1_Load(object sender, EventArgs e) все удаляются и параметры с которой запускалась программа удаляются полностью. Параметры считывались в static void Main(string[] args) и они хранятся до тех пор пока форма не запустится, а при запуске формы УДАЛЯЮТСЯ БЕЗВОЗВРАТНО. Программируя в C# выходит нельзя сделать так что программа "образец.exe -параметр" содержала в форме label1.text = (тот самый параметр). В морально устаревшем Delphi это можно было сделать, а вот в C# это сделать НЕЛЬЗЯ ПОЛНОСТЬЮ И НИКОГДА. Как обратиться к разработчикам C# чтобы разрешили сохранение параметров запущенной программы во время запуска и появления формы?
     
    Последнее редактирование: 8 авг 2014
  17. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Прикинь, ты можешь передать нужные данные куда надо из main, когда создаёшь главную форму. Ох уж эти биллгейтсы - лишь бы жизнь испортить, то ли дело линупс!!!

    Проклятый MSDN подло содержит в себе ответы на все вопросы - http://social.msdn.microsoft.com/Fo...instance-application-in-c?forum=csharpgeneral

    Ребята, вы ездили на автомобиле с навигатором? Гораздо легче, но маршрут запоминаешь в несколько раз медленнее, чем один раз, но самостоятельно разобраться с картой и названиями улиц. Намёк понятен? Вы задаёте вопросы, ответы на которые есть в интернете. Более того, они есть на всех языках и не на одном каком-то скрытом сайте, потому что вопросы ваши - базовые, начального уровня, всё это обсосано миллион раз. И главное, почти всё это описано в документации к вашим инструментам.
     
    Последнее редактирование: 8 авг 2014
    Zelya и ThisSuXX нравится это.
  18. Zelya

    Zelya

    Регистрация:
    20 апр 2007
    Сообщения:
    722
    Offtop
    42!


    Абсолютно согласен, Гугл выдает тонны инфы по подобным запросам.

    И чтобы не оффтопить, вопрос, на который Гугл не дал прямого ответа. Есть 16-битная винда. Реальный режим (да-да, вы уже догадались, что я про Win 2.x). Задача: нужно прочитать файл размером более 64К. Казалось бы, что может быть проще, делаешь GlobalAlloc GlobalLock и читаешь. Но! Штатная функция read, которая так хорошо работала с LocalAlloc намертво вешает всею винду. Причем винда виснет даже при пробе прочитать 1 байт. Приходится выделять буфер, в который читаю через read, а потом в цикле кидаю в память из GlobalAlloc. Че за нафиг-то такой?
     
  19. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Zelya, не очень понял в чём именно проблема, ну создаёшь несколько буферов по 64K. Если юзать himem.sys, то вроде можно было большой буфер создавать. В DOS, в древней винде не работал.
     
    Zelya нравится это.
  20. A.P.$lasH

    A.P.$lasH

    Legacy

    Регистрация:
    27 фев 2010
    Сообщения:
    4.667
    Zelya, а если перед этим вызвать GlobalCompact? Хотя это, конечно, пальцем в небо. Я с двойкой тоже не знаком :)
     
    Zelya нравится это.
  21. Zelya

    Zelya

    Регистрация:
    20 апр 2007
    Сообщения:
    722
    Если я не ошибаюсь, то для создание нескольких буферовпо 64К нужно использовать тот же GlobalAlloc, что не решает проблему.
    himem.sys, можно мспользовать как "фичу", но программа должна уметь работать и без него.
    Попробовал, не помогает. Хотя есть кое-какие соображения. В зависимости от количества загружаемых байтов, винда может зависнуть сразу, а может еще попытаться, например, выполнить следующую операцию по обновлению окна или плюнуть диалог с непонятной ошибкой (просто набор ASCII символов). Сдается мне, что read, каким-то образом игнорирует сегментацию и гадит в данные программы, нарушая ее работу и всей системы в целом (многозадачность-то кооперативная).
     
  22. Steel Rat Stainless

    Steel Rat

    Регистрация:
    28 дек 2006
    Сообщения:
    3.260
    Записав данные фиг знает куда программа может сразу кони двинуть, а может и потом. Это от везения зависит (когда сразу - гораздо лучше). Ваще поведение, что ты описываешь - это тупо запись в невыделенную область памяти. В базовой памяти ты никак не можешь выделить память больше 64K на один указатель. Хотя можно, наверное, поиграться с сегментами.
    Кстати, что за данные ты пытаешься загрузить, может нет смысла грузить целиком?
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление