![]() |
Vertändnisfrage zu 'Meldungen'
Hi zusammen
Ich habe hier ein offensichtlich etwas älteres Programm (NikomsoftOCR), das zwar zu laufen scheint - soweit ich vorerst mitbekommen habe: Scannen läuft einwandfrei, nur beim anschliessenden OCR wird am Ende eine Fehlermeldung erzeugt - aber nach dem Kompilieren 3 Meldungen nach folgendem Muster hinterlässt: Zitat:
Wissen wollte ich von ihr eigentlich, was 'nicht expandiert' bedeutet. Gruss Delbor |
AW: Vertändnisfrage zu 'Meldungen'
Suche doch mal mit der Internet-Suchmaschine deines Vertrauens nach "H2443" ;-)
|
AW: Vertändnisfrage zu 'Meldungen'
Hi Günther
Danke für den ¨Tip! Da war ich ja gar ![]() Zitat:
Gruss Delbor |
AW: Vertändnisfrage zu 'Meldungen'
Die Meldung sagt dir doch schon was du tun kannst:
So bekommt man den Tag auch rum. |
AW: Vertändnisfrage zu 'Meldungen'
Hi Günther
Ja, klar. Das ist der einfachste Weg, die Meldung wegzukriegen. Ich wollte sie aber nicht einfach weghaben, sondern auch wissen, was sie bedeutet. Denn ganz so harmlos, wie die Anmerkung vermuten lassen kann, ist die wohl nicht. Gruss Delbor |
AW: Vertändnisfrage zu 'Meldungen'
IIRC bewirkt INLINE, daß die Routine nicht wie üblich aufgerufen wird,sondern der entsprechende Maschinencode während der Generierung direkt im Programm angeordnet wird. Sollte also höchstens Auswirkungen auf die Ausführungsgeschwindigkeit haben.
|
AW: Vertändnisfrage zu 'Meldungen'
Zitat:
Nun sind einige der Typdeklarationen in Vcl.Dialogs einfach nur Aliase zu Typen aus System.UITypes:
Delphi-Quellcode:
Aus nicht näher ersichtlichen Gründen braucht der Compiler im Falle einer Inline-Auflösung Zugriff auf die originalen Deklarationen. Deswegen muss in deiner Unit die System.UITypes aufgeführt sein.
type
TMsgDlgType = System.UITypes.TMsgDlgType; {$NODEFINE TMsgDlgType} TMsgDlgBtn = System.UITypes.TMsgDlgBtn; {$NODEFINE TMsgDlgBtn} TMsgDlgButtons = System.UITypes.TMsgDlgButtons; {$NODEFINE TMsgDlgButtons} Machst du das nicht, wird das inline nicht aufgelöst und ein regulärer Call erzeugt. |
AW: Vertändnisfrage zu 'Meldungen'
So in etwa.
Man kann es sich fast wie die Makros aus anderen Programmiersprachen vorstellen. Der "Inhalt" dieser Funktion/Prozedur wird an der "Aufrufstelle" eingefügt, an statt einem CALL/Aufruf zu dieser Funktion. > Es entfällt also ein Sprung, was bei "kurzen" Funktionen den Programmablauf verbessern kann. (dass dieses "Einfügen" vom Compiler oft/meistens nicht wirklich optimal vorgenommen wird und bei Assembler-Funktionen praktisch garnicht gut geschehen kann, das ist eine andere Angelegenheit) Und hier sagt der Compiler einfach nur Zitat:
PS: Was sich garnicht auflösen lässt, wäre z.B. ein Zugriff auf eine Funktion, globale Variable oder einen Typ, welcher in der Implementation der anderen Unit deklariert wurde. > Hier geht nur INLINE weglassen oder diesen Teil ins Interface verschieben. |
AW: Vertändnisfrage zu 'Meldungen'
Warum aber eine Routine wie MessageDlg inline deklariert wurde erschließt sich mir nicht wirklich.
Inline macht eigentlich nur Sinn wenn die Abarbeitung sich dann "messbar" auf die Ausführungsgeschwindigkeit auswirkt. Ich bezweifle das für eine Dialogbox......... |
AW: Vertändnisfrage zu 'Meldungen'
Hi zusammen
Vielen Dank für eure aufschlussreichen Antworten! @Fritzew Zitat:
Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz