Avatar billede hansjacob Nybegynder
20. juni 2002 - 15:58 Der er 3 kommentarer og
2 løsninger

Kald af ekstern funktion

Hej

Hvordan kalder man en ekstern funktion/exe fil?

Jeg har skrevet et lille program, som gerne skulle kunne bruges af andre endten kompileret eller ikke kompileret, men at paste den ind går ikke.

dvs noget i stil med:

main() {
    minexefil.exe //og så et argument eller to med
}

Af input skal være et filnavn og outputtet et array. Hvordan kringler man den? Kan man nøjes med at returnere en pointer til et array?
Eller skal man bruge en pointer til et initialiseret (i programmet hvorfra .exe filen kaldes) array som argument til exe filen og således skrive til det initialiserede array inde i exe filen?
Avatar billede jespernaur Nybegynder
20. juni 2002 - 17:40 #1
Hvis du ønsker at aktivere en færdig-linket .exe-fil fra et andet program, er fremgangsmåden stærkt afhængig af operativsystemet. Har du overvejet at lave koden som en funktion/subrutine, som brugeren linker ind i sit program (dette er ikke at 'paste' koden ind), og derefter kan kalde som enhver anden funktion?
Avatar billede kamikaze Nybegynder
21. juni 2002 - 10:14 #2
Du kan gøre det sådan her:

<kompilerer i M$VC++, konsol applikation:>

#include <windows.h>
#include <iostream.h>
#include <conio.h>

void RunProgram(char* pszAppName, char* pszParams)
{
    ShellExecute(NULL,
                "open",
                pszAppName,
                pszParams,
                NULL,
                SW_SHOW);
}

int main()
{
    cout << "Press any key to launch notepad..." << endl;
    getch();
    RunProgram("notepad.exe", NULL);
    cout << "Press any key to terminate..." << endl;
    getch();
    return 0;
}
Avatar billede kamikaze Nybegynder
21. juni 2002 - 10:15 #3
Du kan også sende et parameter med:

RunProgram("notepad.exe", "c:/MinTekstFil.txt");
Avatar billede hansjacob Nybegynder
21. juni 2002 - 11:52 #4
Jeg tror jeg vælger den løsning, hvor vi linker dem sammen og så kalder som en funktion. Men hvad med det array der kommer ud? skal der et argument ind som en pointer eller hvad? noget i stil med:

main() {
  double mainArray[1000][3];
  laes(&mainArray);
}

*****I DEN ANDEN FIL*****
laes(*array) {
  array[1][1] = 2;
  bla bla...
}

Er det i grove træk den rigtige måde?

Kan man i funktionen laes bestemme størrelsen af det array der kommer som input? Og hvordan?
Avatar billede jespernaur Nybegynder
21. juni 2002 - 17:27 #5
Det er i grove træk korrekt, du er dog nødt til at sørge for, at laes kender dimensionerne af array-parameteren, ellers vil indiceringen ikke virke.

Mvh
Jesper Naur
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
Kurser inden for grundlæggende programmering

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