Keresés

Új hozzászólás Aktív témák

  • asimov007

    csendes tag

    Kedves forumozok!
    a következő oproblémám adódott!
    Ir ni kell c++-ban egy dll-t amit delphiben kell meghivni!
    Gyuri16 kedves segítségével a delphi rendben vanmde valamiért a dll-nek nem tudom korrektül átadni a mat1 charaktertömböt!
    Mivel mind a c++,mind a delphi tudásom minimális,hozzátok fordulok segítségért!!!

    Nagyon szépen köszönöm!

    mind a két program szintaktikailag helyes?(Lefordul),a tdump mutatja is a kiért entry pointot,de delhiből való hiváskor,a c++ nem ad vissza korrekt értékekeket.
    HA a delphiben kimommentezem a dll hivást,a kattingatás tökéletes(Köszönöm gyuri16)
    A megadott direkt paraméterekkel is mindig 'O' jön vissza!

    Köszönöm!!!!

    ez a c++
    #ifndef _DLL_H_
    #define _DLL_H_
    #if BUILDING_DLL
    #define DLLIMPORT __declspec (dllexport)
    #define DllExport extern __declspec(dllexport)
    #else /* Not BUILDING_DLL */
    #endif /* Not BUILDING_DLL */
    #endif
    #include <stdio.h>
    #include <string.h>
    int sor( int mat1,int a, int b);
    char mat1[10][10];
    extern "C"
    {
    DllExport char kiert(char mat[10][10],int acol, int arow,char jatekos)
    {
    char c[10]=
    {'1','2','3','4','5','6','7','8','9'};
    return c[acol];
    // return mat[1][1];
    }
    class DLLIMPORT DllClass
    {
    public:
    DllClass();
    virtual ~DllClass(void);

    private:

    };

    ez a dlphi kod!

    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, Grids;
    type
    TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;var CanSelect: Boolean);
    procedure FormCreate(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    jatekos:char;
    i:integer;
    j:integer;
    Form1: TForm1;
    Type mat= array [1..10,1..10] of char;
    function kiert(mat: mat;acol: integer;arow: integer;jatekos:char):char; stdcall; external 'Projekt1.dll';
    implementation
    {$R *.dfm}
    procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,ARow: Integer; var CanSelect: Boolean);
    var
    mat1:mat;
    begin
    if StringGrid1.Cells[ACol, ARow] <> '' then
    exit
    else
    StringGrid1.Cells[ACol, ARow]:=jatekos;
    if jatekos='O' then
    jatekos:='X'
    else
    jatekos:='O';
    // mat1[Acol,Arow]:= jatekos;
    mat1[1,1]:= jatekos;
    //Showmessage( kiert(mat1,1,1,jatekos));
    //Showmessage( kiert(mat1,acol,arow,jatekos));
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    var
    i:integer;
    j:integer;
    begin
    jatekos:='X';
    for i:=1 to 10 do
    for j:=1 to 10 do
    StringGrid1.Cells[i,j]:= '';
    end;
    end.

  • asimov007

    csendes tag

    válasz Gyuri16 #1784 üzenetére

    Kedves Gyuri 16!

    Tudom,egy kissé pofátlan a kérés,de kb 1 hete használom a delphit.
    Hogyan tudnám ciklusba rakni a Select -et és a rekurzivitást elkerülni!
    Tényleg nagyon idegen nekem még program!
    Ha szemtelennek tartasz,bátran mondd meg!!
    És köszi a gyors választ
    Légyszi irdd meg ,egyáltalán zavarhatlak-e hülye kédésekkel?

  • asimov007

    csendes tag

    Sziasztok!

    Nagyon gyenge vagyok delhpiböl!
    El kéne egy kis segítség!!!!

    Miért száll el azonnal ez a gyengécske program?
    :W :W

    unit Unit1;
    interface
    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, Grids;
    type
    TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
    var CanSelect: Boolean);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    Type mat= array [1..10,1..10] of integer;
    function kiert(mat: mat;xpos: integer;ypos: integer;jatekos:char):integer; stdcall; external 'Projekt1.dll';
    implementation
    {$R *.dfm}
    procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
    ARow: Integer; var CanSelect: Boolean);
    var mat1:mat;
    vertek:integer;
    jatekos:char;
    i:integer;
    j:integer;
    b:boolean;
    begin
    jatekos:= 'g';
    vertek:= 2;
    while vertek <> 0 do
    begin
    if jatekos = 'g' then
    jatekos:= 'j'
    else
    jatekos:= 'g';
    StringGrid1SelectCell(Sender,acol, arow,b);
    begin
    if jatekos = 'g' then
    StringGrid1.Cells[Acol,Arow]:='O'
    else
    StringGrid1.Cells[Acol,Arow]:='X';
    end;
    end;
    end; // while
    end.
    :W

Új hozzászólás Aktív témák

Hirdetés