![]() |
[ASM] Aufruf von ASM – Proceduren in der System-Unit
Hallo,
in der System – Unit ist die Procedure _LStrSetLength angegeben. Wenn man in einer ASM function diese dann Aufrufen will mit:
Delphi-Quellcode:
Dann kann der Compiler die Funktion nicht finden.
CALL System._LStrSetLength
Wenn man stattdessen:
Delphi-Quellcode:
Dann findet der Compiler auch die Procedure in der System - Unit
CALL System.@LStrSetLength
Wenn man aber eigene Routinen aufrufen will in einer anderen Unit, so funktioniert das nur mit dem Unterstrich.
Delphi-Quellcode:
Meine Frage ist jetzt, warum ist das so?
CALL ASMRotinen.@StrLaenge //Compiler findet die Procedure nicht.
CALL ASMRotinen._StrLaenge // Alles OK Bis bald Chemiker |
Re: [ASM] Aufruf von ASM – Proceduren in der System-Unit
die .DCUs der System und SysInit sind nicht wirklich aus den zugehörigen .PAS erstellt worden.
viele der Funktion/Typen darin werden eigentlich vom Compiler behandelt und stehn da nur drin, damit sie überhaupt irgendwo sichtbar sind. die entpsrchenden .PAS sind eher Dummy-Units, welche aufzeigen was in etwa in diesen Unit's vorkommt. also die Namen darin nicht ganz ersnt nehmen ... PS: und daß viele ohne dn führenden Unterstrich zugänglich sind, hast du ja schon bemerkt :angel2: Der einfachste Weg ist bei sowas nachzusehn was der Compiler bei SetLength aufruft ... wobei SetLength nicht gleich SetLength ist ... siehe LStrSetLength für lange AnsiStrings. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:53 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