In Delphi werkt navolgende prima.
TPL_bestand is een tstringlist en ik wil dus de lengte van regel 25 bepalen.
Lazarus geeft als foutmelding: Illegal qualifier
Code:nlengteString := Tpl_bestand[25].Length;
In Delphi werkt navolgende prima.
TPL_bestand is een tstringlist en ik wil dus de lengte van regel 25 bepalen.
Lazarus geeft als foutmelding: Illegal qualifier
Code:nlengteString := Tpl_bestand[25].Length;
Ik heb met de code dezelfde foutmelding.
Met
is de foutmelding niet aanwezig.Code:nlengteString := Length(Tpl_bestand[25]);
Overigens geeft codecompletion ook length niet als suggestie...
In welke versie van Delphi werkt dat prima? Is het misschien een class/type/record helper die die Length property verzint? De functionele versie van MaartenW is de versie die ik altijd gebruik, en die zou denk ik moeten werken in alle versies van Delphi en Lazarus.
1+1=b
Ik kreeg wel een rood kringeltje onde lengte als zijnde fout, maar er werd netjes gecompileerd.
Bovenstaan voorbeeld laat geen fout zien.
Kunnen Delphi XE3 extensies zijn (type helper's voor native types). Dat zit pas _net_ in FPC trunk, dus dat is nog lang, lang niet in releases.
Vermeldt volgende keer aub de Delphi versie, dat maakt raden een stuk makkelijker :-)
Die code zou werken als je een implementatie van .length maakt in FPC.
Lazarus heeft dat echter nog lang niet allemaal geimplementeerd, maar FPC 2.7.1 kan het wel. Het is niet de compiler, maar Lazarus. Maar dat zal wel snel worden bijgewerkt. Het is een library kwestie, geen compiler kwestie meer. VB gegeven lazarus 1.1/fpc2.71 trunk:
Lazarus moet dat gewoon allemaal nog implementeren. Dat komt wel. Maar je kan het dus zelf ook en het is erg simpel.Code:program teststringhelper; {$APPTYPE CONSOLE} {$MODE DELPHIUNICODE} type TStringhelper = record helper for string function Length:integer; end; function TStringhelper.Length:integer; begin Result:=system.length(self);// anders ambigue end; var a:string; begin a:= 'de compiler heeft dat al in 2.7.1'; writeln(a,' -lengte: ',a.length); end.
edit:
Op het moment dat je de vraag stelde ging mijn voorbeeld bijna nog niet op, trouwens. Zo nieuw is het.
Ook: ik beschuldig de Lazarus maintainers een beetje terwijl dit vb juist bij de rtl thuis hoort. Maar de compiler kan het nu dus.
Last edited by Thaddy; 05-Mar-13 at 20:42.
Werken aan Ansi support voor Windows is verspilde tijd, behalve voor historici.
@Bart: over "taal", net zoals bij Delphi is het maar de vraag hoe je dat interpreteert. Ook in Delphi is het een kwestie van de rtl (de compiler doet dat niet met compiler magic). En puristen zullen zeggen dat dat niet bij de "taal" hoort, maar implementatief is met wat met de taal kan. Maar ik zat fout en had gecorrigeerd dat het aan Lazarus lag. Het is een rtl kwestie en hoort bij de library maintainers van fpc rtl/fcl te liggen.
Werken aan Ansi support voor Windows is verspilde tijd, behalve voor historici.
Even voor de duidelijkheid: IMHO hoort het op de puinhopen van de historie :-)
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks