Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Help with DLL development

Leo7Leo7 Member Posts: 6
Hello all!

I need to develop my own DLL with which has function to execute some SQL query.

Help me please!

Thank You
«1

Comments

  • zibadianzibadian Member Posts: 6,349
    : Hello all!
    :
    : I need to develop my own DLL with which has function to execute some
    : SQL query.
    :
    : Help me please!
    :
    : Thank You
    :
    Writing a DLL is very simple:
    1 Start a new DLL project
    2 Write a function or procedure to perform your SQL query
    3 Write the exports clause to export the function

    Simple example:
    [code]
    library MyDLL;

    function SumIntegers(x, y: integer): integer; StdCall;
    begin
    Result := x + y;
    end;

    exports
    SumIntegers;

    end.
    [/code]

    To import the DLL, make a standard project and add this line:
    [code]
    function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    [/code]
    Now you can use SumIntegers() to add 2 integers together.
  • Leo7Leo7 Member Posts: 6
    : : Hello all!
    : :
    : : I need to develop my own DLL with which has function to execute some
    : : SQL query.
    : :
    : : Help me please!
    : :
    : : Thank You
    : :
    : Writing a DLL is very simple:
    : 1 Start a new DLL project
    : 2 Write a function or procedure to perform your SQL query
    : 3 Write the exports clause to export the function
    :
    : Simple example:
    : [code]:
    : library MyDLL;
    :
    : function SumIntegers(x, y: integer): integer; StdCall;
    : begin
    : Result := x + y;
    : end;
    :
    : exports
    : SumIntegers;
    :
    : end.
    : [/code]:
    :
    : To import the DLL, make a standard project and add this line:
    : [code]:
    : function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    : [/code]:
    : Now you can use SumIntegers() to add 2 integers together.




    OK, can You please find an error in my DLL:

    library mydll;
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ADODB, DB, StdCtrls;
    var
    ADOConnection1: TADOConnection;
    ADOCommand1: TADOCommand;
    {$R *.res}
    procedure MySQL(); stdcall;
    begin
    ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data Source=it_ld_big';
    ADOCommand1.Connection:=ADOConnection1;
    ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    ADOConnection1.openl
    ADOCommand1.execute;
    end;
    exports MySQL;
    begin
    end.



  • zibadianzibadian Member Posts: 6,349
    : : : Hello all!
    : : :
    : : : I need to develop my own DLL with which has function to execute some
    : : : SQL query.
    : : :
    : : : Help me please!
    : : :
    : : : Thank You
    : : :
    : : Writing a DLL is very simple:
    : : 1 Start a new DLL project
    : : 2 Write a function or procedure to perform your SQL query
    : : 3 Write the exports clause to export the function
    : :
    : : Simple example:
    : : [code]: :
    : : library MyDLL;
    : :
    : : function SumIntegers(x, y: integer): integer; StdCall;
    : : begin
    : : Result := x + y;
    : : end;
    : :
    : : exports
    : : SumIntegers;
    : :
    : : end.
    : : [/code]: :
    : :
    : : To import the DLL, make a standard project and add this line:
    : : [code]: :
    : : function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    : : [/code]: :
    : : Now you can use SumIntegers() to add 2 integers together.
    :
    :
    :
    :
    : OK, can You please find an error in my DLL:
    :
    : library mydll;
    : uses
    : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    : Forms,
    : Dialogs, ADODB, DB, StdCtrls;
    : var
    : ADOConnection1: TADOConnection;
    : ADOCommand1: TADOCommand;
    : {$R *.res}
    : procedure MySQL(); stdcall;
    : begin
    : ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated
    : Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data
    : Source=it_ld_big';
    : ADOCommand1.Connection:=ADOConnection1;
    : ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    : ADOConnection1.openl
    : ADOCommand1.execute;
    : end;
    : exports MySQL;
    : begin
    : end.
    :
    :
    There are several errors:
    - ADOConnect1 is never instantiated.
    - ADOCommand1 is never instantiated.
    - Several basic Delphi syntax errors: Will be shown by compiler.
  • Leo7Leo7 Member Posts: 6
    : : : : Hello all!
    : : : :
    : : : : I need to develop my own DLL with which has function to execute some
    : : : : SQL query.
    : : : :
    : : : : Help me please!
    : : : :
    : : : : Thank You
    : : : :
    : : : Writing a DLL is very simple:
    : : : 1 Start a new DLL project
    : : : 2 Write a function or procedure to perform your SQL query
    : : : 3 Write the exports clause to export the function
    : : :
    : : : Simple example:
    : : : [code]: : :
    : : : library MyDLL;
    : : :
    : : : function SumIntegers(x, y: integer): integer; StdCall;
    : : : begin
    : : : Result := x + y;
    : : : end;
    : : :
    : : : exports
    : : : SumIntegers;
    : : :
    : : : end.
    : : : [/code]: : :
    : : :
    : : : To import the DLL, make a standard project and add this line:
    : : : [code]: : :
    : : : function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    : : : [/code]: : :
    : : : Now you can use SumIntegers() to add 2 integers together.
    : :
    : :
    : :
    : :
    : : OK, can You please find an error in my DLL:
    : :
    : : library mydll;
    : : uses
    : : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    : : Forms,
    : : Dialogs, ADODB, DB, StdCtrls;
    : : var
    : : ADOConnection1: TADOConnection;
    : : ADOCommand1: TADOCommand;
    : : {$R *.res}
    : : procedure MySQL(); stdcall;
    : : begin
    : : ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated
    : : Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data
    : : Source=it_ld_big';
    : : ADOCommand1.Connection:=ADOConnection1;
    : : ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    : : ADOConnection1.openl
    : : ADOCommand1.execute;
    : : end;
    : : exports MySQL;
    : : begin
    : : end.
    : :
    : :
    : There are several errors:
    : - ADOConnect1 is never instantiated.
    : - ADOCommand1 is never instantiated.
    : - Several basic Delphi syntax errors: Will be shown by compiler.



    Can You please correct my errors?
    Be so kind, Im not so educated in Delphi
  • zibadianzibadian Member Posts: 6,349
    : : : : : Hello all!
    : : : : :
    : : : : : I need to develop my own DLL with which has function to execute some
    : : : : : SQL query.
    : : : : :
    : : : : : Help me please!
    : : : : :
    : : : : : Thank You
    : : : : :
    : : : : Writing a DLL is very simple:
    : : : : 1 Start a new DLL project
    : : : : 2 Write a function or procedure to perform your SQL query
    : : : : 3 Write the exports clause to export the function
    : : : :
    : : : : Simple example:
    : : : : [code]: : : :
    : : : : library MyDLL;
    : : : :
    : : : : function SumIntegers(x, y: integer): integer; StdCall;
    : : : : begin
    : : : : Result := x + y;
    : : : : end;
    : : : :
    : : : : exports
    : : : : SumIntegers;
    : : : :
    : : : : end.
    : : : : [/code]: : : :
    : : : :
    : : : : To import the DLL, make a standard project and add this line:
    : : : : [code]: : : :
    : : : : function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    : : : : [/code]: : : :
    : : : : Now you can use SumIntegers() to add 2 integers together.
    : : :
    : : :
    : : :
    : : :
    : : : OK, can You please find an error in my DLL:
    : : :
    : : : library mydll;
    : : : uses
    : : : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    : : : Forms,
    : : : Dialogs, ADODB, DB, StdCtrls;
    : : : var
    : : : ADOConnection1: TADOConnection;
    : : : ADOCommand1: TADOCommand;
    : : : {$R *.res}
    : : : procedure MySQL(); stdcall;
    : : : begin
    : : : ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated
    : : : Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data
    : : : Source=it_ld_big';
    : : : ADOCommand1.Connection:=ADOConnection1;
    : : : ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    : : : ADOConnection1.openl
    : : : ADOCommand1.execute;
    : : : end;
    : : : exports MySQL;
    : : : begin
    : : : end.
    : : :
    : : :
    : : There are several errors:
    : : - ADOConnect1 is never instantiated.
    : : - ADOCommand1 is never instantiated.
    : : - Several basic Delphi syntax errors: Will be shown by compiler.
    :
    :
    :
    : Can You please correct my errors?
    : Be so kind, Im not so educated in Delphi
    :
    The instantiation of objects is done in this manner:
    [code]
    ObjectVariable := ObjectType.Create(Possible parameters);
    [/code]
    Thus for the ADOConnect1 the instantiation becomes:
    [code]
    ADOConnect1 := TADOConnection.Create(Necessary Parameters);
    [/code]
    I don't have Dlephi here, so I don't know which parameters the TADOConnection.Create() constructor needs. The help files list those.
  • Leo7Leo7 Member Posts: 6
    : : : : : : Hello all!
    : : : : : :
    : : : : : : I need to develop my own DLL with which has function to execute some
    : : : : : : SQL query.
    : : : : : :
    : : : : : : Help me please!
    : : : : : :
    : : : : : : Thank You
    : : : : : :
    : : : : : Writing a DLL is very simple:
    : : : : : 1 Start a new DLL project
    : : : : : 2 Write a function or procedure to perform your SQL query
    : : : : : 3 Write the exports clause to export the function
    : : : : :
    : : : : : Simple example:
    : : : : : [code]: : : : :
    : : : : : library MyDLL;
    : : : : :
    : : : : : function SumIntegers(x, y: integer): integer; StdCall;
    : : : : : begin
    : : : : : Result := x + y;
    : : : : : end;
    : : : : :
    : : : : : exports
    : : : : : SumIntegers;
    : : : : :
    : : : : : end.
    : : : : : [/code]: : : : :
    : : : : :
    : : : : : To import the DLL, make a standard project and add this line:
    : : : : : [code]: : : : :
    : : : : : function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    : : : : : [/code]: : : : :
    : : : : : Now you can use SumIntegers() to add 2 integers together.
    : : : :
    : : : :
    : : : :
    : : : :
    : : : : OK, can You please find an error in my DLL:
    : : : :
    : : : : library mydll;
    : : : : uses
    : : : : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    : : : : Forms,
    : : : : Dialogs, ADODB, DB, StdCtrls;
    : : : : var
    : : : : ADOConnection1: TADOConnection;
    : : : : ADOCommand1: TADOCommand;
    : : : : {$R *.res}
    : : : : procedure MySQL(); stdcall;
    : : : : begin
    : : : : ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated
    : : : : Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data
    : : : : Source=it_ld_big';
    : : : : ADOCommand1.Connection:=ADOConnection1;
    : : : : ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    : : : : ADOConnection1.openl
    : : : : ADOCommand1.execute;
    : : : : end;
    : : : : exports MySQL;
    : : : : begin
    : : : : end.
    : : : :
    : : : :
    : : : There are several errors:
    : : : - ADOConnect1 is never instantiated.
    : : : - ADOCommand1 is never instantiated.
    : : : - Several basic Delphi syntax errors: Will be shown by compiler.
    : :
    : :
    : :
    : : Can You please correct my errors?
    : : Be so kind, Im not so educated in Delphi
    : :
    : The instantiation of objects is done in this manner:
    : [code]:
    : ObjectVariable := ObjectType.Create(Possible parameters);
    : [/code]:
    : Thus for the ADOConnect1 the instantiation becomes:
    : [code]:
    : ADOConnect1 := TADOConnection.Create(Necessary Parameters);
    : [/code]:
    : I don't have Dlephi here, so I don't know which parameters the
    : TADOConnection.Create() constructor needs. The help files list those.



    TADOConnection.Create(AOwner:Tcomponent)

    Where shoul I place this inicialization?
    What shoul I write in AOwner:TComponent?

    Thanx


  • zibadianzibadian Member Posts: 6,349
    : : : : : : : Hello all!
    : : : : : : :
    : : : : : : : I need to develop my own DLL with which has function to execute some
    : : : : : : : SQL query.
    : : : : : : :
    : : : : : : : Help me please!
    : : : : : : :
    : : : : : : : Thank You
    : : : : : : :
    : : : : : : Writing a DLL is very simple:
    : : : : : : 1 Start a new DLL project
    : : : : : : 2 Write a function or procedure to perform your SQL query
    : : : : : : 3 Write the exports clause to export the function
    : : : : : :
    : : : : : : Simple example:
    : : : : : : [code]: : : : : :
    : : : : : : library MyDLL;
    : : : : : :
    : : : : : : function SumIntegers(x, y: integer): integer; StdCall;
    : : : : : : begin
    : : : : : : Result := x + y;
    : : : : : : end;
    : : : : : :
    : : : : : : exports
    : : : : : : SumIntegers;
    : : : : : :
    : : : : : : end.
    : : : : : : [/code]: : : : : :
    : : : : : :
    : : : : : : To import the DLL, make a standard project and add this line:
    : : : : : : [code]: : : : : :
    : : : : : : function SumIntegers(x, y: integer): integer; StdCall; external 'MyDLL';
    : : : : : : [/code]: : : : : :
    : : : : : : Now you can use SumIntegers() to add 2 integers together.
    : : : : :
    : : : : :
    : : : : :
    : : : : :
    : : : : : OK, can You please find an error in my DLL:
    : : : : :
    : : : : : library mydll;
    : : : : : uses
    : : : : : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    : : : : : Forms,
    : : : : : Dialogs, ADODB, DB, StdCtrls;
    : : : : : var
    : : : : : ADOConnection1: TADOConnection;
    : : : : : ADOCommand1: TADOCommand;
    : : : : : {$R *.res}
    : : : : : procedure MySQL(); stdcall;
    : : : : : begin
    : : : : : ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated
    : : : : : Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data
    : : : : : Source=it_ld_big';
    : : : : : ADOCommand1.Connection:=ADOConnection1;
    : : : : : ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    : : : : : ADOConnection1.openl
    : : : : : ADOCommand1.execute;
    : : : : : end;
    : : : : : exports MySQL;
    : : : : : begin
    : : : : : end.
    : : : : :
    : : : : :
    : : : : There are several errors:
    : : : : - ADOConnect1 is never instantiated.
    : : : : - ADOCommand1 is never instantiated.
    : : : : - Several basic Delphi syntax errors: Will be shown by compiler.
    : : :
    : : :
    : : :
    : : : Can You please correct my errors?
    : : : Be so kind, Im not so educated in Delphi
    : : :
    : : The instantiation of objects is done in this manner:
    : : [code]: :
    : : ObjectVariable := ObjectType.Create(Possible parameters);
    : : [/code]: :
    : : Thus for the ADOConnect1 the instantiation becomes:
    : : [code]: :
    : : ADOConnect1 := TADOConnection.Create(Necessary Parameters);
    : : [/code]: :
    : : I don't have Dlephi here, so I don't know which parameters the
    : : TADOConnection.Create() constructor needs. The help files list those.
    :
    :
    :
    : TADOConnection.Create(AOwner:Tcomponent)
    :
    : Where shoul I place this inicialization?
    : What shoul I write in AOwner:TComponent?
    :
    : Thanx
    :
    :
    :
    All methods are like normal procedures/functions. The rules for procedure parameters apply to them as well. In this case AOwner can be [b]nil[/b], because there's no form, which owns the components. If an object doesn't have an owner, don't forget to free it using the Free() method.
    Instantiation must become before using the object, or its properties/methods. Since it is runnable code, it must be within the body of a function or procedure.
  • Leo7Leo7 Member Posts: 6
    So, it is ok now?

    library mydll;
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ADODB, DB, StdCtrls;
    var
    ADOConnection1: TADOConnection;
    ADOCommand1: TADOCommand;
    {$R *.res}
    procedure GetSimpleText(); stdcall;
    begin
    ShowMessage('Hello');
    ADOConnection1 := TADOConnection.Create(nil);
    ADOCommand1:= TADOCommand.Create(nil);
    ADOConnection1.Open;
    ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data Source=it_ld_big';
    ADOCommand1.Connection:=ADOConnection1;
    ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    ADOConnection1.Close;

    ADOConnection1.Free;
    ADOCommand1.Free;

    end;
    exports GetSimpleText;
    begin
    end.
  • zibadianzibadian Member Posts: 6,349
    : So, it is ok now?
    :
    : library mydll;
    : uses
    : Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
    : Forms,
    : Dialogs, ADODB, DB, StdCtrls;
    : var
    : ADOConnection1: TADOConnection;
    : ADOCommand1: TADOCommand;
    : {$R *.res}
    : procedure GetSimpleText(); stdcall;
    : begin
    : ShowMessage('Hello');
    : ADOConnection1 := TADOConnection.Create(nil);
    : ADOCommand1:= TADOCommand.Create(nil);
    : ADOConnection1.Open;
    : ADOConnection1.connectionstring:= 'Provider=SQLOLEDB.1;Integrated
    : Security=SSPI;Persist Security Info=False;Initial Catalog=fx;Data
    : Source=it_ld_big';
    : ADOCommand1.Connection:=ADOConnection1;
    : ADOCommand1.CommandText:='UPDATE Brokers SET spread = ''33''';
    : ADOConnection1.Close;
    :
    : ADOConnection1.Free;
    : ADOCommand1.Free;
    :
    : end;
    : exports GetSimpleText;
    : begin
    : end.
    :
    I don't know. It looks ok, but what does the compiler give for errors, if any?
  • Leo7Leo7 Member Posts: 6
    From compiler no errors!

    But my program(MetaTrader - forex broker platform), from which Im using my dll is crashing after ShowMessage("Hello!");

    I suppose there is a problem with shared memory

    What do You think?
«1
Sign In or Register to comment.