We help IT Professionals succeed at work.
Get Started

code works with button1, but doesnt send via socket

boycoder
boycoder asked
on
457 Views
Last Modified: 2012-05-11
It works on my local machine via button1, however i can't figure out the string i need to send and recieve.


function _VarToStr(const V: variant): string;
    var
    Vt: integer;
    begin
    Vt := VarType(V);
        case Vt of
          varSmallint,
          varInteger  : Result := IntToStr(integer(V));
          varSingle,
          varDouble,
          varCurrency : Result := FloatToStr(Double(V));
          varDate     : Result := VarToStr(V);
          varOleStr   : Result := WideString(V);
          varBoolean  : Result := VarToStr(V);
          varVariant  : Result := VarToStr(Variant(V));
          varByte     : Result := char(byte(V));
          varString   : Result := String(V);
          varArray    : Result := VarArrayToStr(Variant(V));
        end;
    end;

var
i : integer;
begin
    Result := '[';
     if (VarType(vArray) and VarArray)=0 then
       Result := _VarToStr(vArray)
    else
    for i := VarArrayLowBound(vArray, 1) to VarArrayHighBound(vArray, 1) do
     if i=VarArrayLowBound(vArray, 1)  then
      Result := Result+_VarToStr(vArray[i])
     else
      Result := Result+'|'+_VarToStr(vArray[i]);

    Result:=Result+']';
end;

function VarStrNull(const V:OleVariant):string; //avoid problems with null strings
begin
  Result:='';
  if not VarIsNull(V) then
  begin
    if VarIsArray(V) then
       Result:=VarArrayToStr(V)
    else
    Result:=VarToStr(V);
  end;
end;


function GetWMIObject(const objectName: String): IDispatch; //create the Wmi instance
var
  chEaten: Integer;
  BindCtx: IBindCtx;
  Moniker: IMoniker;
begin
  OleCheck(CreateBindCtx(0, bindCtx));
  OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
  OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
end;



procedure  GetAntiVirusProductInfo;
var
 objWMIService : OLEVariant;
 colItems      : OLEVariant;
 colItem       : OLEVariant;
 oEnum         : IEnumvariant;
 iValue        : LongWord;
begin;
 objWMIService := GetWMIObject('winmgmts:\\localhost\root\SecurityCenter2');

 colItems      := objWMIService.ExecQuery('SELECT * FROM AntiVirusProduct','WQL',0);
 oEnum         := IUnknown(colItems._NewEnum) as IEnumVariant;
 while oEnum.Next(1, colItem, iValue) = 0 do
 begin
   Writeln(Format('displayName                    %s',[VarStrNull(colItem.displayName)]));// String
   Writeln(Format('instanceGuid                   %s',[VarStrNull(colItem.instanceGuid)]));// String
   Writeln(Format('pathToSignedProductExe         %s',[VarStrNull(colItem.pathToSignedProductExe)]));// String
   Writeln(Format('pathToSignedReportingExe       %s',[VarStrNull(colItem.pathToSignedReportingExe)]));// String
   Writeln(Format('productState                   %s',[VarStrNull(colItem.productState)]));// Uint32
   Writeln('');
 end;
end;



////SENDING INFO BACK TO MY CLIENT ///
   COMMAND_GETAV:
     begin
      GetAntiVirusProductInfo;

        SENDCOMMAND(COMMAND_GETAV,(GetAntiVirusProductInfo)socket);
        END;



///recieivng from server///

 COMMAND_GETAV:            Writeln(Edata); 
/// im sure this needs to be Writein(GetAntiVirusProductInfo);
// ??

Open in new window

Comment
Watch Question
Freelance Project Manager
CERTIFIED EXPERT
Top Expert 2010
Commented:
This problem has been solved!
Unlock 1 Answer and 10 Comments.
See Answer
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE