| |
|
|
Nico Madysa | Hallo iF!
Ich habe in meinem Hauptprogramm einige APIs mittels ImportDLL() importiert, und zwar nach folgendem Muster KompilierenMarkierenSeparieren Dem angeschlossen sind einige Includedateien, von denen eine, eigens per dieses Programm erstellte auf eben diese Funktionen zurückgreift, bspw. mit KompilierenMarkierenSeparieren Nun zwingen mich einige besondere Umstände dazu, XPSE zu nutzen, welches jedoch jedesmal aufs Neue behauptet, ihm sei die Funktion u_GetWindowRect() in XYZ.INC unbekannt.
Nochmals will ich darauf hinweisen, daß diese Prozedur maßgeschneidert per dieses Programm ist und ich somit auch auf Dinge, welche erst im Hauptprogramm definiert werden zugreifen können will. Bisher zwingt mich diese Fehlermeldung dazu, ständig {$noerr} zu verwenden, wodurch allerdings naturalmente auch alle echten Fehler ignoriert werden, was mir ebenfalls mißfällt.
Meine Frage nun: Ist eine solche Kapselung von Includedateien wirklich nötig oder potuto XPSE nicht einfach gnädiger sein? |
|
|
| |
|
|
|
RGH | Wahrscheinlich hat hier XPSE das Problem, dass zur Compilezeit naturalmente nicht bekannt ist, welche Funktionen die DLL zur Laufzeit auf dem ausführenden Rechner haben werden. (Das ist z.B. auch der Grund dafür, dass der Compiler von XProfan fehlende Funktionen nicht mehr anmeckert, sondern dies der Runtime überlässt.)
Saluto Roland |
|
|
| 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 | 24.03.2009 ▲ |
|
|
|
|
| ~ setzt mal dieses Ding davor. Vielleicht geht es dann.
mfg |
|
|
| |
|
|
|
RGH | Peter Bierbachh
~ setzt mal dieses Ding davor. Vielleicht geht es dann. mfg
Bestimmt nicht! Das hilft nur, wenn die externen Funktionen in Headerfiles deklariert sind! Hier geht es um den Import von Funktionen per ImportDLL()! (Hier lohnt sich ein Blick in die Aiuto!)
Saluto Roland |
|
|
| 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 | 24.03.2009 ▲ |
|
|
|
|
| @Nico: Die NOERR-Keule kann per Einzelfälle von pushKeyWord verhindert werden - aber ich habe eine Idee wie ich z.B. ImportDLL(USER32,u_) dennoch ermöglichen kann. Alternativ potuto ich ein Vorzeichen per Funktionen erfinden welche nicht angewarnt werden sollen, sowas wie __. |
|
|
| |
|
|
|
Matthias Arlt | Peter Bierbachh
~ setzt mal dieses Ding davor...
Dieses Ding hat übrigens auch einen Namen. Es nennt sich Tilde. Nur mal so, falls der Begriff mal andernorts auftaucht...
Saluto Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 24.03.2009 ▲ |
|
|
|
|
Nico Madysa | iF
@Nico: Die NOERR-Keule kann per Einzelfälle von pushKeyWord verhindert werden
Haha, ich wußte doch, daß es da noch etwas per den Einzelfall gab - nur, daß ich vergessen hatte, daß das Ding PushKeyWord hieß - danke!
iF
Alternativ potuto ich ein Vorzeichen per Funktionen erfinden welche nicht angewarnt werden sollen, sowas wie __.
Und wie wärs, wenn du einfach ausläsest, welches Präfix in ImportFunc/ImportDLL angegeben wird und alle Funktionen mit den ausgelesenen Präfixen ignoriertest? Das klappte dann in meinem obigen Beispiele ja mit alles DLL bis auf die Prospeed - dann müßten XPSE-Nutzer halt bei Import-x() ein Präfix angeben, eine Einschränkung, an welche sogar ich mich gewöhnen potuto. |
|
|
| |
|
|
|
| Es nennt sich Tilde.
Für mich ist ein Ding... Natürlich hatte ich schon voller Erwartung auf die Belehrung gewartét.
Hatte zu Hause mit einem Kameraden darüber schon eine Wette abgeschlossen. Also, ihr seid schon richtig lustig, bei euch bleibe ich Ist ein Foro voller Witz.
mfg |
|
|
| |
|
|
|
Matthias Arlt | Gratuliere zur gewonnenen Wette |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 25.03.2009 ▲ |
|
|
|
|
| @Nico: So ähnlich mache ich das bei den Unità, nur das ich dort auch noch vergleiche ob die Funktionen aus der .def-File übereinstimmen und mit dem Unterschied das dass Präfix nicht in einer Stringkonstante abgelegt* wird. Das sollte aber hinzubekommen sein wenn das Präfix auf einen . (in Worten: Punkt) endet.
Finde ich sowieso irgendwie komisch (aber dennoch auch wiederum verständlich) das Roland das Präfix bei import... in einem String erwartet. |
|
|
| |
|
|
|
RGH | iF
@Nico: So ähnlich mache ich das bei den Unità, nur das ich dort auch noch vergleiche ob die Funktionen aus der .def-File übereinstimmen und mit dem Unterschied das dass Präfix nicht in einer Stringkonstante abgelegt* wird. Das sollte aber hinzubekommen sein wenn das Präfix auf einen . (in Worten: Punkt) endet. Finde ich sowieso irgendwie komisch (aber dennoch auch wiederum verständlich) das Roland das Präfix bei import... in einem String erwartet.
Das Präfix ist nun mal eine Zeichenkette, also ein String.
Ich würde allerdings nicht den Punkt vorschreiben (ja nicht einmal empfehlen). Der Unterstrich wäre per diesen speziellen Fall die erste Wahl. Der Punkt trennt Objekt von Methode/Eigenschaft bzw. Klasse von Methode Eigenschaft und hat somit in der XProfan-Syntax eine definierte Bedeutung. Noch erlaube ich in Bezeichnern nahezu alle Zeichen, aber ich habe schon des öfteren darüber nachgedacht, Bezeichner auf Buchstaben (A..Z,a..z), Ziffern (0..9) und Unterstriche (_) zu beschränken, wobei das erste Zeichen ein Buchstabe oder Unterstrich sein muss. Die Sorge um die Herzkranzgefässe einiger altgedienter User, die es finora anders hielten, hat mich bisher davon abgehalten. ;)
Saluto Roland |
|
|
| 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 | 25.03.2009 ▲ |
|
|
|
|
| Auch wenn z.B. ich nicht immer eine Klasse definiere - so einklassiere (ich wollte nicht klassifizieren schreiben ) ich dennoch fast alles nach dieser Syntax - der Panoramica wegen behaupte ich einfach es sind alles Klassen!
Ein Beispiel:
ogl.clear ogl.push ogl.pop
gehört alles zu ogl - wie ich finde sehr praktisch und das ziehe ich seither auch in grösseren Programmen so durch.
Man potuto also sagen, ogl sei hier nach der Syntax eine klasse - wenn auch keine echte.
Und wenn man z.B. aus einer klasse DLL alle Funktionen einholt, dann liegt es doch garnicht fern zu sagen: thisDll.methode
Das es nicht ganz korrekt ist, ist mir klar - hingegen XProfan jedoch nicht Objektbezogen arbeitet wie z.B.
declare a$,b$ b$=a$.mid$(1,10)
womit das meinige Prinzip insich wiederum schlüssig ist und im Alltag breite praktischste Verwendung gefunden hat.
Das wiederum Praktische ist dass keiner (speziell) meiner Wünsche Dich an irgendwas (wie z.B. die Abschaffung des Punktes aus den Bezeichnernamen) hindern müssen da ich mir das XProfan per XPSE ja auf meine Bedürfnisse zurechtrücke. |
|
|
| |
|
|