Avatar billede sessa Nybegynder
20. december 2008 - 19:19 Der er 4 kommentarer og
1 løsning

Definition af LStrFromChar

Jeg er stødt på en Delphi-funktion, LStrFromChar, som formentlig laver en char om til et string-objekt, men jeg kan ikke finde en beskrivelse af funktionen nogetsteds.

Det undrer mig. Jeg så et sted, at man skulle downloade Borlands WinHlp32.zip og finde svaret der, men det passer ikke. Er der nogen, der kan hjælpe?
Avatar billede arne_v Ekspert
20. december 2008 - 21:24 #1
Det er ikke en Win32 API funktion men en Delphi funktion, så der er ingen grund til at kigge
i Win32 API dokumentationen.

Der er såmænd heller ingen grund til at kigge andre steder.

Lidt investigation finder nemlig:

System.pas

procedure _LStrFromChar(var Dest: AnsiString; Source: AnsiChar);
asm
    PUSH    EDX
    MOV    EDX,ESP
    MOV    ECX,1
    CALL    _LStrFromPCharLen
    POP    EDX
end;

og

http://hallvards.blogspot.com/2006_04_01_archive.html

med

The System unit contains a number of RTL magic routines. Btw, I’m not making up the phrases “magic routines” and “compiler magic”. Above the declaration of a number of special routines with names that start with an underscore (which maps to an ampersand when compiled) in the System.pas unit you’ll find this comment:

{ Procedures and functions that need compiler magic }


The compiler is hard-coded to find and use these as it is generating code for language features such as strings, dynamic arrays and dynamic methods. They cannot be called explicitly from Pascal – only implicitly by using the language features they implement or explicitly from BASM. As we have seen in a couple of cases, to call a compiler magic routine from BASM you use the syntax CALL System.@MagicName.

D.v.s. at det er en funktion som bruges internt i kode genereret af Delphi og ikke en
funktion du kan/skal kalde.

Og hvis du vil kalde den, så er du nødt til at switche til assembler.
Avatar billede hrc Mester
20. december 2008 - 21:33 #2
Det var næsten det samme jeg havde gang i, svaret - men arnes er bedre. Jeg selv blev i midlertid hængende på denne side: http://www.zachsaw.co.cc/?pg=borlndmm_tbbmm - Tests på min PC og D2007 viser en forbedring på 16%
Avatar billede arne_v Ekspert
20. december 2008 - 21:45 #3
Det er tilsyneladende ret populært blandt hardcore Delphi folk at lave egne varianter
af _L* funktionerne i System som er hurtigere end Borlands.
Avatar billede sessa Nybegynder
21. december 2008 - 13:07 #4
Så der var altså en grund til, at jeg ikke kunne finde en beskrivelse af funktionen. Jeg skal sådan set heller ikke bruge den til noget, jeg var bare nysgerrig og mystificeret!

Lægger du et svar, arne? - og tak til jer begge to.
Avatar billede arne_v Ekspert
21. december 2008 - 15:16 #5
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester