| |
|
|
Uwe ''Pascal'' Niemeier | Hallo Leute!
Habe eben das ocxPackage Nr. 2 fertiggestellt. Dabei geht es eigendlich gar nicht mehr um ocx-Dateien, sondern vor Allem um die Möglichkeiten, Windows-interne ActiveX-Elemente zu nutzen. Ist recht umfangreich geworden; die Beispiele reichen von der Steuerung von Office-Komponenten bis zum HTML-Editor. Und es bleibt noch genug für die nächste Version
PS: Habe diesmal gleich ne CHM-Hilfe erstellt. Mann, ist der MS-Compiler nervig...
SeeYou Pascal |
|
|
| |
|
|
|
Rolf Koch | Hallo Pascal,
Saustark!!! Das meiste z.B. unter HTML klappt hervorragend. Leider so Sachen wie unter Extern nicht, denn dann kommt immer noch: Mitglied nicht gefunden. Keine Ahnung was das bedeutet. Beende ich dann das Programm, so wird meine Festplatte lauter und nach Besichtigung des Taskmanagers sehe ich, dass Profan.exe immer noch vorhanden ist. Leider wie immer keine Zeit, der Ursache auf den Grund zu gehen. Aber ich glaube, dass extern wohl deswegen so lautet, da man externe Programme benötigt, welche ich z.B. nicht besitze (Exel und Co.) |
|
|
| |
|
|
|
Ralph Theobald | Hallo Pascal,
klappt alles hervorragend !!
Hallo Rolf, du mußt die ocx - Dateien downloaden und registrieren.
Gruß Ralph |
|
|
| |
|
|
|
Georg Hovenbitzer | Hallo Pascal,
ich bin erst heute dazu gekommen deine 2. Version zu testen. Was soll ich sagen, klappt alles ganz klasse
Ein kleines Problem habe ich aber bei der Übersetzung mit Profan2CPP. Ich komme mit der Prozedur CallIntern nicht klar, dort kommen die Variable Count% und Error& vor, die aber nicht deklariert sind.
Deklariere ich Count% in der Prozedur knallt es bei der Anwendung. Habe ich hier einen Denkfehler oder wo liegt das Problem ?? |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 21.05.2007 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Georg!
Das liegt daran, dass CallIntern nur von anderen Procs (CallMethod und CallMethodEx) aufgerufen wird, und in denen sind die vermissten Variablen lokal deklariert (Übergabe als Parameter ist nicht, weil auf dem ParameterStack die eigendlichen Werte für den Call-Aufruf stehen). Am Besten nimmst du die lokalen Deklarationen raus und deklarierst Count% und Error& global, das sollte klappen.
SeeYou Pascal |
|
|
| |
|
|
|
Georg Hovenbitzer | Hallo Pascal,
die Lösung mit der globalen Deklarierung klappt leider nicht.
Es kommt immer die Fehlermeldung: Fehler: $80020008 Falscher Variablentyp.
Diese kommt auch wenn ich nur count% global mache. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 22.05.2007 ▲ |
|
|
|
|
Sebastian König | Hallo Georg,
leider sind auch ein paar andere Variablen davon betroffen... Es müsste helfen, wenn Du in den Übersetzungsoptionen Alle Variablen global deklarieren aktivierst. Leider könnte diese Holzhammer-Methode auch unerwünschte Nebeneffekte haben...
MfG
Sebastian |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | Hallo Leute!
leider sind auch ein paar andere Variablen davon betroffen...
Stimmt... Um den Code kompakter zu machen, habe ich mehrfach vorkommende Sequenzen naheliegenderweise als Procs ausgelagert. Und die nutzen natürlich direkt die in den aufrufenden Prozeduren lokal deklarierten Variablen. Ist vieleicht kein besonders sauberer Stil, sollte aber doch legitim sein?
Habe jedenfalls mal auf die Schnelle (und ohne Gewähr) versucht, die Sache zu bereinigen (die Aufteilung von CallMethod auf vier (!) Procs zwecks Fehlerauswertung machte bei näherer Betrachtung sowieso keinen Sinn) Die Verwendung des Parameter-Stacks läßt sich allerdings nicht so ohne Weiteres vermeiden...
HTH Pascal |
|
|
| |
|
|
|
Sebastian König | Hallo Pascal,
Stimmt... Um den Code kompakter zu machen, habe ich mehrfach vorkommende Sequenzen naheliegenderweise als Procs ausgelagert. Und die nutzen natürlich direkt die in den aufrufenden Prozeduren lokal deklarierten Variablen. Ist vieleicht kein besonders sauberer Stil, sollte aber doch legitim sein?
Habe jedenfalls mal auf die Schnelle (und ohne Gewähr) versucht, die Sache zu bereinigen (die Aufteilung von CallMethod auf vier (!) Procs zwecks Fehlerauswertung machte bei näherer Betrachtung sowieso keinen Sinn) Die Verwendung des Parameter-Stacks läßt sich allerdings nicht so ohne Weiteres vermeiden...
Schon besser . Es fehlt nur noch das Array v$[]. Meine Empfehlung wäre, auch dieses Array in ausreichender Größe (32 oder so) global zu deklarieren und in den entsprechenden Prozeduren an Stelle von declare ein clear v$[] einzufügen.
Es geht in C++ nicht, von einer aufgerufenen Prozedur aus auf Variablen zuzugreifen, die in der aufrufenden Funktion deklariert wurden. In XProfan ist dies (leider...) erlaubt. Der Profan2Cpp-Syntax-Check meldet in solchen Fällen die Warnung W0003 (Variable möglicherweise nicht verfügbar). Mit der Option Alle Variablen global deklarieren lässt sich das Problem wie schon erwähnt beheben, aber wenn es nur um eine Handvoll betroffener Variablen geht, ist es ratsamer, sie von Hand zu globalisieren...
MfG
Sebastian |
|
|
| |
|
|
|
| Sebastian König
Es geht in C++ nicht, von einer aufgerufenen Prozedur aus auf Variablen zuzugreifen, die in der aufrufenden Funktion deklariert wurden. In XProfan ist dies (leider...) erlaubt.
XProfan folgt in Bezug auf die Sichtbarkeit der Variablen den Gegebenheiten von Pascal bzw. Delphi: Eine Variable einer aufrufenden Funktion ist ebenso bekannt, wie eine globale Variable.
(An dieser Stelle wäre wahrscheinlich ein Profan2Pascal einfacher gewesen, als ein Profan2CPP. Ich hatte mit so etwas mal angefangen, aber da Profan2CPP so wunderbar funktioniert, dieses nicht mehr fortgesetzt.)
Wenn man also vor hat, ein Programm mit Profan2CPP zu behandeln, sollte man in allen Funktionen nur auf globale Variablen, Parameter oder lokale (in der Funktion definierte) Variablen zugreifen. Aus eigener (leidvoller) Erfahrung möchte ich hinzufügen, daß man globale Variablen möglichst sparsam und auf alle Fälle mit sprechenden Namen verwenden sollte!
Gruß Roland |
|
|
| |
|
|
|
RGH | Arrghhhh ... als ich mit der vorhergehen Antwort angefangen habe, war ich noch eingeloggt ... und während des Schreibens - ich wurde wegen eines Telefonates etwas aufgehalten - wohl wieder mal rausgeschmissen! Also hier sehe ich für iF noch Handlungsbedarf! Dieses ständige Einloggen nervt ungemein. Wenigstens solange der PC an und der Browser offen ist, sollte man eingeloggt bleiben!
Gruß Roland (in der Hoffnung, beim Abschicken dieses Beitrags noch angemeldet zu sein.) |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 23.05.2007 ▲ |
|
|
|
|
Sebastian König |
(An dieser Stelle wäre wahrscheinlich ein Profan2Pascal einfacher gewesen, als ein Profan2CPP. Ich hatte mit so etwas mal angefangen, aber da Profan2CPP so wunderbar funktioniert, dieses nicht mehr fortgesetzt.) Leider habe ich an solche Unterschiede im Detail garnicht gedacht, als ich mit der Arbeit an Profan2Cpp begonnen habe. Naja, das meiste ließ sich ja recht zufriedenstellend lösen...
MfG
Sebastian |
|
|
| |
|
|