amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > WB Start vs. CLI Start [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

18.07.2003, 17:47 Uhr

Mad_Dog
Posts: 1944
Nutzer
Hallo,

Ich hab gerade das Problem, daß ein Programm, das ich geschrieben habe zwar problemlos von der Shell oder mittels IconX und Shellscript läuft, aber wenn ich es über die WB Starte (eigenes Icon erzeugt, mit "Starten von Shell"), wirft es machmal nicht reproduzierbare Gurus.

Die Frage: Muß ich beim Programmieren von WB gestarteten Programmen irgendwas spezielles beachten? Das genannte Programm öffnet EasyRequester und ASL-Requester. Außerdem werden diverse DOS und File IO Funktionen ausgeführt und libraries geöffnet und geschlossen.

Die Hauptschleife ist nach ANSI C:

code:
int main(void)
{

...hier das Programm

return(0)
}


Ich habe in Beispielsources vom RKM und NDK schon andere Sachen bei WB gestarteten Programmen gesehen, deshalb frag ich. Kann es sein, daß beim WB Start irgendwelche Parameter übergeben werden?

--

http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

18.07.2003, 18:16 Uhr

Micha1701
Posts: 938
Nutzer
Hi!

Hier der Code, den ich immer benutze um ein Prog von der WB und der Shell zu starten...


code:
//includes
#include <workbench/startup.h>
#include <clib/dos_protos.h>
#include <wbstartup.h>

//Variabeln


BPTR olddir;

void wbmain(struct WBStartup * argmsg)
{
	if(argmsg)
		olddir = CurrentDir(argmsg->sm_ArgList->wa_Lock);
	else
		olddir = NULL;
		
Ende:
	if(olddir)
		CurrentDir(olddir);
}

void main(void)
{
	wbmain(NULL);
}

--
:boing: Micha :boing:

Look at my HPs:
http://www.lanser-online.de.vu

http://www.RealmsofPower.de.vu



[ - Antworten - Zitieren - Direktlink - ]

18.07.2003, 18:45 Uhr

Mad_Dog
Posts: 1944
Nutzer
Zitat:
Original von Micha1701:
Hier der Code, den ich immer benutze um ein Prog von der WB und der Shell zu starten...
...


Wobei bei StormC 3.0 in <Storm/wbstartup.h> schon folgender Funktionsprototyp definiert ist:

code:
void wbmain(struct WBStartup *);


Und wo wir schonmal dabei sind: Irgendwo gabs mal die Handbücher zu StormC 3.0 als pdf zum runterladen. Auf der Amiga OS 3.5 Developer CD 2.1 sind im Verzeichnis "Handbücher" selbige leider nicht enthalten, sondern nur ein Guide zu den Neuerungen. :(
--

http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]

19.07.2003, 08:42 Uhr

thomas
Posts: 7717
Nutzer
Der WB-Start wird von Compiler zu Compiler unterschiedlich gehandhabt.

Zunächst mal ist der Standard-Code wie folgt:


int main(int argc,char **argv)
{

...hier das Programm

return(0)
}


Wenn man vom CLI startet, steht in argc die Anzahl der Parameter. Wobei dieser immer größer oder gleich 1 ist, denn in argv[0] steht der Programmname.

Bei einigen Compilern (z.B. Aztec C, VBCC) wird der WB-Start nun so signalisiert, daß argc auf 0 steht und argv ein Pointer auf die WB-Message ist.

Bei anderen Compilern (z.B. Dice C) gibt es einen eigenen Einsprungspunkt, dem nur die WB-Message übergeben wird:


void wbmain(struct WBStartup *wbmsg)
{
...hier das Programm, wenn es von der Workbench gestartet wird.
}



Man könnte es universell etwa so lösen:


int main(int argc,char **argv)
{
BPTR olddir = NULL;

if (argc == 0)
{
olddir = CurrentDir(((struct WBStartup *)argv)->sm_ArgList->wa_Lock);
...hier die Tooltypes auswerten
}
else
{
...hier die CLI-Parameter auswerten
}

...hier das Programm

if (olddir) CurrentDir (olddir);

return(0)
}

#if defined(__DCC) || defined(__STORM__)
void wbmain (struct WBStartup *msg)
{
main (0,(char **)msg);
}
#endif


Wobei ich nicht sicher bin, wie StormC das macht.

Gruß Thomas

--
Email: thomas-rapp@web.de
Home: home.t-online.de/home/thomas-rapp/

[ Dieser Beitrag wurde von thomas am 19.07.2003 editiert. ]

[ - Antworten - Zitieren - Direktlink - ]

19.07.2003, 12:47 Uhr

Mad_Dog
Posts: 1944
Nutzer
Danke!

@thomas:

So ähnlich wie Du hab ichs dann auch gemacht...
--

http://www.norman-interactive.com

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > WB Start vs. CLI Start [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.