На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Ошибки при работе с Indy 10.0.52
    Использую Delphi 6.0 EE и Indy 10.0.52.

    При создании обработчика OnUDPRead получаю ошибки, раньше такого небыло.

    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle);


    ExpandedWrap disabled
      [Error] Unit1.pas(25): Undeclared identifier: 'TBytes'
      [Error] Unit1.pas(26): Undeclared identifier: 'TIdSocketHandle'
      [Error] Unit1.pas(76): ')' expected but identifier 'Size' found
      [Error] Unit1.pas(77): Missing operator or semicolon
      [Error] Unit1.pas(77): ')' expected but identifier 'PeerIP' found
      [Error] Unit1.pas(77): 'END' expected but ')' found
      [Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'


    Эти типы данных существуют, но непонятно почему Delphi их не принимает.

    У когонибуть было такое? и как лечить.

    Переустановку не предлагать - уже делал не помогло.
    Сообщение отредактировано: User32 -
      Цитата
      [Error] Unit1.pas(25): Undeclared identifier: 'TBytes'
      [Error] Unit1.pas(26): Undeclared identifier: 'TIdSocketHandle'

      Видимо нужно в uses подключить модули SysUtils и IdSocketHandle.
      Остальные ошибки - чисто синтаксические.
        Цитата spleenJack @
        Цитата
        [Error] Unit1.pas(25): Undeclared identifier: 'TBytes'
        [Error] Unit1.pas(26): Undeclared identifier: 'TIdSocketHandle'

        Видимо нужно в uses подключить модули SysUtils и IdSocketHandle.
        Остальные ошибки - чисто синтаксические.

        Уже пробовал, не помогает :(

        Добавлено
        Решил проблему так:

        В начале лечил явно прописав

        ExpandedWrap disabled
          type
            TBytes = array[0..MaxSize] of Byte;


        Но это несовсем красиво и поэтому я просто добавил в uses

        ExpandedWrap disabled
          uses
            IdGlobal, IdSocketHandle;


        и всё заработало вроде бы...
        Сообщение отредактировано: User32 -
          Теперь ещё лучше, пишу:

          ExpandedWrap disabled
            procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
              ABinding: TIdSocketHandle);
            var
            StringFormatedStream: TStringStream;
            begin
            StringFormatedStream := TStringStream.Create('');
            StringFormatedStream.CopyFrom(AData, AData.Size);
            Memo1.Lines.Add(ABinding.PeerIP+' '+StringFormatedStream.DataString);
            StringFormatedStream.Free;
            end;

          и получаю:
          ExpandedWrap disabled
            [Error] Unit1.pas(78): Incompatible types: 'TStream' and 'TBytes'
            [Error] Unit1.pas(78): '(' expected but ')' found
            [Error] Unit1.pas(79): Missing operator or semicolon
            [Fatal Error] Server.dpr(5): Could not compile used unit 'Unit1.pas'

          А если так:
          ExpandedWrap disabled
            procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
              ABinding: TIdSocketHandle);
            var
             i: integer;
             Reply: string;
            begin
             
            // if OnAndOff = False then Exit else
             
             Reply := '';
             for i:=0 to 512 do
             begin
               if AData[i] = 0 then break;
               Reply := Reply + char(AData[i]);
             end;
             Memo1.Lines.Add(Reply);
            end;

          то всё впорядке. <_<
          Сообщение отредактировано: User32 -
            User32 add to uses IdGlobal, IdSocketHandle
              Ну да, так и должно быть... CopeFrom берет данные из TStream, не из TBytes.
                Цитата P.O.D @
                User32 add to uses IdGlobal, IdSocketHandle

                Уже давно добавил, но бестолку. :(

                -Added
                Цитата WildBear @
                Ну да, так и должно быть... CopeFrom берет данные из TStream, не из TBytes.

                Да, вот только почемуто не работает :(
                P.S. может попробовать с указателями поизвращаться, хотя AData ничего не даст...
                Сообщение отредактировано: User32 -
                  я канешно извеняюсь что в мешиваюсь в вашу беседу, но мне показалось странным что это никто не заметил.
                  Цитата User32 @
                  StringFormatedStream.CopyFrom(AData, AData.Size);

                  но функции CopyFrom нужен поток а AData тут масив байт
                  тут лудше использовать Read(..)
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0420 ]   [ 16 queries used ]   [ Generated: 18.11.25, 18:38 GMT ]