Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2018.11.04;
Скачать: [xml.tar.bz2];

Вниз

Не выполняется код в функции   Найти похожие ветки 

 
KropotkinGosha   (2016-09-18 16:55) [0]

Работаю Delphi XE8, Windows 7 Pro.
Есть 2 модуля: вспомогательный и главный. Вот код - главный...

unit uTestingMB;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs,  Vcl.StdCtrls, MasterTCP;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
 public
 end;

var
 Form1: TForm1;
 mas1: array of Double;
 MB1: TMasterTCP;
 size1: Integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 size1:= 2;
 SetLength(mas1, size1);
 mas1[0]:= 1.1;
 mas1[1]:= 1.1;
 MB1.WriteToServer(mas1);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MB1:= TMasterTCP.Create(777);
end;

end.

И вспомогательный:

unit MasterTCP;

interface

uses
 IdTCPServer, // Тут лежит компонент
 System.SysUtils, // Тут лежат вспомогательные процедуры
 IdContext, //Тут лежит AContext: TIdContext
 IdGlobal, // Тут лежит тип данных TIdBytes
 Vcl.Dialogs;

type
 WType=(wtDouble);

type
 TMasterTCP = class(TObject)
 private
   WhatType: WType; // Показывает, с каким типом данных работаем
   Port: Integer; //Порт для работы
   doubleValue: array of Double; //Массив со значениями типа Double

   IdTCPServer: TIdTCPServer; // Компонент обеспечивает связь
   // second level initialization
   // private helper methods
   function GenerateResponce(BufForReading: TIdBytes): TIdBytes;
   function GenerateResponceFloat(BufForReading: TIdBytes): TIdBytes;  // Делаем ответ для типа Double

   // events handlers
   procedure TCPServerExecute(AContext: TIdContext);
 public
   procedure WriteToServer(_Value: array of Double); overload;

   constructor Create(_Port: Integer);
   destructor Destroy;  override;
 end;  // TMasterTCP

implementation

uses uTestingMB;

function TMasterTCP.GenerateResponceFloat(BufForReading: TIdBytes): TIdBytes;
var
 x: Integer;
begin

Если пишу ShowMessage("чё нибудь - то отображается")
Если пишу Form1.Label1.Caption := "чё нибудь - не отображается";
Всякие присваивания переменным - не присваиваются, например
x:= 1; - Неприсваивается(строка кода игнорируется)
Не понимаю что может быть не так... Помогите пожалуйста

end;

function TMasterTCP.GenerateResponce(BufForReading: TIdBytes): TIdBytes;
begin
 case WhatType of
   wtDouble: Result:=GenerateResponceFloat(BufForReading);
 end;
end;

procedure TMasterTCP.WriteToServer(_Value: array of Double);
var
 i: Integer;
begin
 SetLength(doubleValue, Length(_Value));
 for i := 0 to Length(_Value) - 1 do
   doubleValue[i]:= _Value[i];
 WhatType:= wtDouble; //Оповещаем что работаем с типом Double
end;

procedure TMasterTCP.TCPServerExecute(AContext: TIdContext);
var SizeReadBuf:integer;
   BufForReading: TIdBytes; // Буфер для приёма посылок
   BufForWriting: TIdBytes;
begin
 SizeReadBuf:= AContext.Connection.IOHandler.InputBuffer.Size; //Определяем
 //длину посылки, которая поступила на порт
 if SizeReadBuf = 12 then //Если  12 байт пришло на порт, то это именно те
 //данные
 begin
   AContext.Connection.IOHandler.ReadBytes(BufForReading, SizeReadBuf); //Чи-
     //таем данные, которые пришли с порта.
   BufForWriting:=GenerateResponce(BufForReading);//В 11-ом байте информация о коли-
     // честве тэгов в запросе.
  //Передать сформированную посылку
   AContext.Connection.IOHandler.Write(BufForWriting, Length(BufForWriting));
 end;
end;

constructor TMasterTCP.Create(_Port: Integer);
begin
 inherited Create;
 Port:= _Port;
 IdTCPServer:= TIdTCPServer.Create(Form1);
   with IdTCPServer do
   begin
     DefaultPort:= Port;
     OnExecute:= TCPServerExecute;
     Active:= true;
   end;
end;

destructor TMasterTCP.Destroy;
begin
 FreeAndNil(IdTCPServer);
 inherited Destroy;
end;
end.


 
Игорь Шевченко ©   (2016-09-18 17:29) [1]

Demos смотрел ?


 
Rouse_ ©   (2016-09-18 17:36) [2]

Осспади, тебя кто учил такой код писать?


> Если пишу Form1.Label1.Caption := "чё нибудь - не отображается";

Так дай ей отобразиться вызовом ProcessMessage


> Всякие присваивания переменным - не присваиваются, например
> x:= 1; - Неприсваивается(строка кода игнорируется)

Так оптимизатор выкидывает заведомо бессмысленные строчки кода.

Вообще все это (целиком) нужно выкинуть в корзину и написать правильно.


 
KropotkinGosha   (2016-09-18 18:05) [3]

Всё, решился вопрос коллеги, тему можно закрывать
Я не указал размеры буфера для записи:

SizeWriteBuf:= Support1 + BufForReading[11]*2;
SetLength(Result, SizeWriteBuf);

Пс. Нормальный код выдаю, ООП на лицо, ничего не нужно переписывать.


 
Rouse_ ©   (2016-09-18 18:52) [4]


> Нормальный код выдаю, ООП на лицо, ничего не нужно переписывать.

Ну раз так... Удачи, Дружище :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2018.11.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.002 c
2-1474184193
Алекс Серов
2016-09-18 10:36
2018.11.04
Как открыть таблицу Эксель под паролем?


15-1475184602
Юрий
2016-09-30 00:30
2018.11.04
С днем рождения ! 30 сентября 2016 пятница


2-1473936376
lewka
2016-09-15 13:46
2018.11.04
передача нажатия клавиши стороннему приложению


2-1473404951
валя
2016-09-09 10:09
2018.11.04
Указатели


2-1473182108
Drowsy
2016-09-06 20:15
2018.11.04
Вопрос по TTreeView.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский