Avatar billede coladrenge Nybegynder
06. november 2007 - 16:56 Der er 8 kommentarer og
1 løsning

C# DLL File

Hej

Jeg får en fejl når jeg prøver at kalde følgende DLL fra mit Delphi projekt. Umiddelbart vil jeg tro at fejlen er i min C# kode og at jeg ikke får publiseret de funktioner som skal bruges ordentligt.



    public class TDongTSApiInterface
    {
        private PDMVSApi PDM;


        public void CreateConnection(string DBName, string UserName, string PassWord)
        {
            try
            {
                PDM = new PDMVSApi();
                DBLogin(UserName, PassWord, DBName);
            }
            catch (Exception Exp)
            {
                MessageBox.Show(Exp.Message + " " + Exp.ToString());
            }
        }


        private void CloseTSAPIConnection()
        {
            //Her skal der indsættes noget kode til at lukke forbindelse til TSAPI
            PDM = null;
        }

        private void SaveToDatabase(string TSCode)
        {
            //Gæm TSCode til databasen.
            PDM.saveToDb(TSCode);
        }


        private void GetTSCodes()
        {
            object TSCode;
            PDM.getTSCodes("", out TSCode);
        }

        private void DBLogin(string DBUser, string DBPassWord, string DBName)
        {
            //Her skal koden til TSAPI DBLogin skrives.
            if ((DBUser != "") | (DBPassWord != "") | (DBName != ""))
            {
                string st = PDM.logonDb(DBUser, DBPassWord, DBName);
                GetTSCodes();
                if (st != "")
                {
                    //Hvis der er en fejlmeddelelse - så er strengen ikke tom
                    throw new ApplicationException(st);
                }
                else
                {
                }
            }
            else
            {
                throw new ArgumentNullException("DBUser,DBPassWord,DBName", "en af værdierne er NULL");
            }
        }

        private void SetTimeZone(string TimeZone)
        {
            //Her skal koden til SetTimeZone skrives.
            if (TimeZone != "")
            {
                PDM.setDateZone(TimeZone);
            }
            else
            {
                throw new ArgumentNullException("TimeZone", "Der er er ikke angivet en tidszone");
            }
        }


        public TReturnRecord GetTS()
        {
            TReturnRecord ReturnRecord = new TReturnRecord();
            ReturnRecord.ArrTid = new ArrayList();
            return ReturnRecord;
        }


        public void StartTSApi(string DBName, string DBUserName, string DBPassWord, string TidsZone)
        {
            CreateConnection(DBName, DBUserName, DBUserName);

            //Sæt tidszone
            if (TidsZone == "")
            {
                TidsZone = "Default";
            }
            SetTimeZone(TidsZone);
        }
    }
}
Avatar billede arne_v Ekspert
06. november 2007 - 17:03 #1
Delphi.NET eller Delphi Win32 ?
Avatar billede coladrenge Nybegynder
06. november 2007 - 17:08 #2
Hej det er W32
Avatar billede arne_v Ekspert
06. november 2007 - 17:13 #3
Saa skal din C# klasse jo wrappes som COM objekt for at du kan bruge den !
Avatar billede coladrenge Nybegynder
06. november 2007 - 17:19 #4
OK - dette er desvære ikke en løsning for projektet. Men det er et svar på mit spørgsmål så smid et svar :)
Avatar billede arne_v Ekspert
06. november 2007 - 17:19 #5
Du skal koere regasm paa den og smide den i GAC.

(evt. ogsaa afhaengig af hvordan du vil instantiere)
Avatar billede arne_v Ekspert
06. november 2007 - 17:32 #6
Hvorfor er det ikke en loesning for projektet ?

En simpel regasm og gacutil -i, saa kan Delphi bruge CreateOLEObject paa den.
Avatar billede arne_v Ekspert
06. november 2007 - 17:32 #7
Et svar anyway.
Avatar billede coladrenge Nybegynder
06. november 2007 - 19:43 #8
Grunden til at dette ikke er en løsning er at så vidt jeg ved så kræver RegAsm at man kører som administrator på computeren og at programmet skal køres af brugere som ikke er administratorer.
Avatar billede arne_v Ekspert
06. november 2007 - 19:54 #9
Ja - det kan vaere et problem.

Der er et dirty hack her:
  http://blogs.msdn.com/fredeq/pages/call-a-net-class-from-a-gadget-without-regasm-exe.aspx

men jeg ved ikke om det virker.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester