Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5

Модерирует : ShIvADeSt

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 4

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer
    ShIvADeSt

    Цитата:
    процедура прописана в двух модулях - Sysutils и Windows и компилятор берет какая в голову взбредет.

    Если не ошибаюсь, берет из того модуля, который прописан последним в секции uses.
    Думаю нечто подобное, как указал ShIvADeSt и в первом случае.
     

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 04:27 24-09-2009
    Smokeer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо. Следующая проблема:
     

    Код:
     
    unit Component1;
     
    interface
     
    uses
      SysUtils, Classes;
     
    type
      TComponent1 = class(TComponent)
      private
        { Private declarations }
      protected
        { Protected declarations }
        procedure DoSomething(peremennaja:int64); <- тут красным показывает ошибку
      public
        { Public declarations }
      published
        { Published declarations }
      end;
     
    procedure Register;
    implementation
    procedure Register;
    begin
      RegisterComponents('Samples', [TComponent1]);
    end;
     
    procedure DoSomething(peremennaja:int64); <- вот описывается эта процедура.
    Begin
     {Её код.}
    End;
     
    end.
     

     
    Ошибка E2065: Unsatisfied forward or external declaration.
    Для устранения говорят проверить правильно ли написаны оглашения: "The solution: make sure the definitions of your procedures, functions and methods are all there, and spelled correctly."
    Где-то здесь по топику пробегала такая же ошибка, но ничего конкретного не посоветовали... Что именно в данном оглашении неправильно?
    Задумывается так, что есть метод Execute с основным кодом компонента из которого вызываются дополнительные процедуры (DoSomething)... вот на них собственно компилятор и ругается
    Смотрел примеры - есть отдельные процедуры... практически списал...  ноль на массу.
     
    Сюда же вопрос по переменной:

    Код:
     
        type
      TSomeClass = class(TComponent)
      private
        { Private declarations }
        FMaxFileSize : int64;
    ...
     published
        { Published declarations }
         property MaxFileSize : int64 read FMaxFileSize write FMaxFileSize default 32000;
     
    ...
     
    constructor TSmkCopyFile.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      MaxFileSize:=1048576;  // (1Мб)
     
    procedure CheckAndCopy;
    Begin
     If MaxFileSize > бла-бла... <- не видит переменной MaxFileSize и говорит, что она не прописана.
    end;
     

     
    Но при этом переменную видно в диспетчере объектов и с ней нормально работает процедура Execute. Вышел из положения передаванием параметра... но всё же весьма желательно не замусоривать процедуры кучей передач, а сделать просто переменные глобальными... тоесть видными для всех процедур и функцый компонента.
    Пока-что компонент состоит из одного файла... тоесть здесь проблем, по идее, не должно было бы быть...

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 08:14 24-09-2009 | Исправлено: Smokeer, 08:16 24-09-2009
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer

    Цитата:
      protected
        { Protected declarations }
        procedure DoSomething(peremennaja:int64); <- тут красным показывает ошибку
      public
        { Public declarations }
      published
        { Published declarations }
      end;
     
    procedure Register;
    implementation
    procedure Register;
    begin
      RegisterComponents('Samples', [TComponent1]);
    end;
     
    procedure DoSomething(peremennaja:int64); <- вот описывается эта процедура.
    Begin
     {Её код.}
    End;
     
    end.  

    Ну надо же Хелп читать иногда Надо так описывать тело процедуры

    Код:
     
    procedure TComponent1.DoSomething(peremennaja:int64); <- вот описывается эта процедура.
    Begin
     {Её код.}
    End;
     


    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 08:28 24-09-2009
    Smokeer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    скорее нужно скачать такую версию дельфей откуда не вырезали этот самый хелп
     
    Добавлено:
    ShIvADeSt
    Спасибо!.. начало принимать процедурки!
    Вот с переменными - сложнее... всеравно говорит что свойство такое-то в данном месте программы (в этой процедуре) недоступно

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 08:52 24-09-2009
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer

    Цитата:
    Вот с переменными - сложнее... всеравно говорит что свойство такое-то в данном месте программы (в этой процедуре) недоступно

    Ну так естественно - у тебя переменная является членом класса TSomeClass а процедура procedure CheckAndCopy;  вообще хз чья - ясно что не тутошняя Поэтому она и не в курсе, что есть какая то переменная. Сделай процедуру методом класса примерно так

    Код:
     
     
        type
      TSomeClass = class(TComponent)
      private
        { Private declarations }
        FMaxFileSize : int64;
    ...
     published
        { Published declarations }
         property MaxFileSize : int64 read FMaxFileSize write FMaxFileSize default 32000;
         procedure CheckAndCopy;
     
    ...
     
    constructor TSmkCopyFile.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      MaxFileSize:=1048576;  // (1Мб)
     
    procedure TSmkCopyFile.CheckAndCopy;
    Begin
     If MaxFileSize > бла-бла... <- не видит переменной MaxFileSize и говорит, что она не прописана.
    end;  
    end;  
     

    ну а если у тебя TSmkCopyFile потомок от  TSomeClass - то в его описании надо прописать процедуру.
     
    Срочно кури мануалы по работе с классами и видимостью переменных.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 09:25 24-09-2009
    Smokeer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Срочно кури мануалы по работе с классами и видимостью переменных.

    Мануалы курю в процессе.
    В данном случае с переменной интерес в том, что есть группа переменных одинаково описаных (тип разный) - они все в процедуре доступны, а вот конкретно с этим несчастным MaxFileSize свинство какое-то выходит.
     
    Ну да ладно. Пока передаю через параметр... в данном случае она одна и не критично. Думаю, через пару неделек выплывет момент который влияет )

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 16:04 24-09-2009
    Varenik



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Smokeer
    Так тебе ж уже написали
    Цитата:
    у тебя переменная является членом класса TSomeClass а процедура procedure CheckAndCopy

    или процедура должна быть методом класса, в котором описана MaxFileSize, т.е. TSomeClass.CheckAndCopy; или должен использоваться экземпляр класса
    procedure CheckAndCopy;  
    Begin  
     If SomeClass1.MaxFileSize > бла-бла...  
    end;  
    а SomeClass1 описана как SomeClass1: TSomeClass
    и, естественно, проинициализирована

    Всего записей: 1766 | Зарегистр. 21-07-2001 | Отправлено: 12:18 25-09-2009
    Smokeer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Varenik
     Да, я видел. Собственно, спокойствие-только спокойствие
     Если ставить перед именем клас, пишет что переменная недоступна из данного места программы. Это я проверял.

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 13:08 25-09-2009
    gelios



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Господа, как получить MAC-адреса всех сетевых устройств?

    Всего записей: 52 | Зарегистр. 05-01-2003 | Отправлено: 17:49 25-09-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Хелло.
    Я пока анонсирую третью игру на Дельфи, но как застолбить копирайт ума не приложу. Подскажите метод, как я могу избавиться от конкурентов в своей маленькой игре? Внутреннее имя игра называется так:
     
    Раззорители музеев.
     
    1) В логической игре будет отсутствовать автоматика.
    2) Игра будет развивать творческие начала людей увлечённых математикой.
     
    Заранее спасибо.
     
    Добавлено:
    Дело в том, что игре уже как лет 12 её знают и будет неловко если на неё позарятся копирайтеры. В итоге сильно они обломаются.




    как правильно сказали - данный вопрос здесь оффтопик. Он вообще не по программированию.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 22:52 26-09-2009 | Исправлено: ShIvADeSt, 02:30 28-09-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    Обращаю внимание то Ваш вопрос для этой темы - офтопик, если Вы конечно не имели ввиду компоненты защиты от копирования.
    А по существу ответил в ЛС (ПМ).

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 23:13 26-09-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V1s1ter
    Я могу пока только "компоненты защиты от копирования."
    И предполагаю, что можно зарегать (и задействовать) "тхраст", или другой сертификат.
    Возможно при этом пути оформить ограничитель на действия копирайтеров. ПМ спасибо. Весьма познавательно... (удалено)  Мне кажется что есть и не компоненты а юниты которые нужно и которыми пользовался уважаемый алл этого топика.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 00:23 27-09-2009 | Исправлено: delover, 11:45 27-09-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer

    Цитата:
    Если ставить перед именем клас, пишет что переменная недоступна из данного места программы. Это я проверял.
     

    С такими кусками кода, которые Вы выкладывали - трудно подсказать правильно, выложите лучше кусок модуля, можно порезанного, а не пишите строки с определение одного класса и использованием другого, да еще, как я понял и переименованного.
    Завтра 27 будет время - можем попереписываться - помогу чем смогу.
     
    delover
    Сертификатами не пользовался, но тут парой страниц назад народ что-то про это писал, мне оно не нужно потому толком не читал, а Вам может и пригодится.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 00:44 27-09-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aleksandr N
    Hiken
    V1s1ter
    I like !!! Если бы кто-нибудь бафнул пошаговую со скриншотами на русском было бы суперуважуха. Я пока незнаю откуда качать mаkесеrt_exe, кланяюсь в ножки...
     
    Aleksandr N, у вас получилось?
     
     
    Добавлено:
    Кланяюсь в ножки два раза или три.
    нашёл PF\Microsoft SDKs\Windows\v6.1\Bin\makecert.exe
    но Thawte ещё не подключил.
    И вопрос, у меня тестовый сертификат, как его заюзать в проге Delphi|w32|7.0-2006

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 12:03 27-09-2009 | Исправлено: delover, 12:42 27-09-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    понятно, тогда к джадаем.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 17:15 27-09-2009
    andrewtishkin



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто-нибудь работал с компонентами ICS (альтернатива Indy)?
    Вчера установил в D2010, скомпилировал примеры, запустил демку OverbyteIcsHttpTst. Решил проверить POST-запрос. Такое чувство, что строка с данными вообще не отсылается (шлю name и pass, сервер возвращает XML с кодом результата). Сервер упорно говорит номер ошибки, которая означает - не указан name...
     
    То ли я уже туплю, то ли и правда что-то не срабатывает С Indy запрос-ответ проходит на ура...

    Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 20:43 27-09-2009
    data man



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    andrewtishkin
    Какая версия ICS ? V7 ?  
    Из SVN - либо с оффсайта [ Download ICS-V7 Distribution (Sep 12, 2009) ] ?

    ----------
    Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
    Кекс. Антибиотики. Ламбада.

    Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 20:49 27-09-2009
    andrewtishkin



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V7, Sep 12 с сайта
    PS:

    В POST ведь & для соединения параметров используется?
    "application/x-www-form-urlencoded" пробовал ставить - не помогло...

    Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 21:07 27-09-2009
    jonikDk



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    кто пользуется ICS ??  
    как принимать бинарные данные используя TWSocket ?? может кто-то поможет кусочком кода ?
    Признаюсь честно, что пока нет времени самому ковырять, пока очень занят другим.
    Поэтому если у кого есть время и желание помочу, буду очень благодарен  
     

    Всего записей: 1605 | Зарегистр. 01-03-2004 | Отправлено: 21:37 27-09-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня уже начинает закипать мозг. Часы переводятся в последнюю субботу октября
       
    и какого это чудо техники делает так в сентябре
       
    уверяю "Date and Time propertis" написана на Дельфи и её не я писал.
    виндовс я тоже не писал. Как надо на Дельфи сделать так чтобы мой мозг больше не ломался? Я же веть не знал что это может произойти в сентябре...
     
    Добавлено:
    А нельзя ли системе хотябы один раз для приличия спросить у меня когда она собирается менять циферки на датах файла. Ну хот для приличия в конце-то концов. Один раз спросить! Я бы хоть саломки подстелил. Р-Р-Р
     
    Добавлено:
    У меня из-за этого пользователи суппорт D2010 не могут увидеть.
     
    Добавлено:
    Это уже просто неприлично, то что делает система с моими мозгами.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 21:57 27-09-2009
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru