Newsgroup: it.comp.lang.delphi
Titolo: aiutino

premetto che non so quasi nulla di delphi....
devo scrivere una dll in delphi che faccia da interfacci a un programma C.
qualcosa di simile a un bancomat, con tre pulsanti e uno schermo che
mostri l'output del programma C.
per ora ho scritto questo:
-------------------------------------------------
//C program that call a Delphi dll
#include <stdio.h>
#include <windows.h>
#include <string.h>
typedef int (CALLBACK* LPFNDLLFUNC1)(char*);
HINSTANCE hDLL;               // Handle to DLL
void (*open) (void);
void (*display) (char *str);
int
main (int argc, char *argv[]){
   char stringa[14][32];
 hDLL = LoadLibrary("test.dll");
 if(!hDLL){
           MessageBox(NULL,"DLL non caricata", argv[0],MB_OK);
           return 1;
           }
 open = (void *) GetProcAddress(hDLL,"openwindows");
 if (!open) {
              // handle the error
              MessageBox(NULL,"errore funzione DLL", argv[0],MB_OK);
              FreeLibrary(hDLL);
              return 1;
              }
 display = (void *) GetProcAddress(hDLL,"hello");
 if (!display) {
              // handle the error
              MessageBox(NULL,"errore funzione DLL", argv[0],MB_OK);
              FreeLibrary(hDLL);
              return 1;
              }
  open();
  strcpy(stringa[0], "12345678901234567890123456789012");
  strcpy(stringa[1], "2******************************2");
  strcpy(stringa[2], "3******************************2");
  strcpy(stringa[3], "4******************************2");
  strcpy(stringa[4], "5******************************2");
  strcpy(stringa[5], "6******************************2");
  strcpy(stringa[6], "7******************************2");
  strcpy(stringa[7], "8******************************2");
  strcpy(stringa[8], "9******************************2");
  strcpy(stringa[9], "0******************************2");
  strcpy(stringa[10],"1******************************2");
  strcpy(stringa[11],"2******************************2");
  strcpy(stringa[12],"3******************************2");
  strcpy(stringa[13],"4******************************2");
  display(stringa);
  getchar();
  //FreeLibrary(hDLL);
  return 0;
}
------------------------------------------------------
library test;
{prima prova di DLL}
uses
  SysUtils,
  Classes,
  Unit2 in 'Unit2.pas' {Form2};
type display=array [0..13] of array [0..31] of char;
var Form1: TForm2;
function openwindows():integer  ;cdecl;
 begin
   form1.show;
   //form1.Free;
 end;
function hello(var stringa:display):integer ;cdecl;
 var i,j:integer;
begin
     form1.memo1.Text := 'something'; {wrong?}
     for i:=0 to 13 do
       begin
       write('->|');
       for j:=0 to 31 do
       write(stringa[i][j]);
       writeln('|<-');
       end;
end;
exports
 hello,openwindows;
begin
 writeln('DLL:prova output matrice caratteri');
 form1 := Tform2.Create(Nil);
end
-----------------------------------------------------------------------
il problema è che ho l'output su console, ma la finestra rimane bloccata.
come si affronta un problema del genere...bisogna creare un thread o
qualcosa di simile?
-- 
Michele "cATO" Ferrario
http://www.photosig.com/go/users/view?id=19361
http://latente.altervista.org
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

ho provato a incapsulare tutto in un thread ma continua a non funzionare:
---------------------------------------------
unit processo;
interface
uses
  Classes,
  Forms,
  finestra;
type
  proc = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
implementation
{ processo }
procedure proc.Execute;
begin
      interfaccia.show;
end;
begin
     interfaccia:= TInterfaccia.Create(nil);
end.
-----------------------------------------------------------------
function openwindows():integer  ;cdecl;
    var dummy:proc;
 begin
     writeln('DLL:prova output matrice caratteri');
       dummy:=proc.create(false);
     result:=0;
 end;


 il problema è che ho l'output su console, ma la finestra rimane bloccata.
penso che le cose possano coesistere (console e form).
-- 
Mauro Falzari 
   [ 
http://digilander.libero.it/mauro.falzari
 ]
 
 "Se guardi nell'abisso, anche l'abisso guarda in te." 
   (Friedrich Nietzsche)