![]() |
Javascript-Funktion in Delphi?
Hi,
ich muss die Aufgabe eines Javascripts in einem Delphi-Programm erledigen. Dies ist soweit auch kein Problem, allerdings verwendet das JS die Funktion ![]() Greetz alcaeus |
Re: Javascript-Funktion in Delphi?
Mit der WinAPI Funktion InternetCanonicalizeUrl kannst du Sonderzeichen in einer URL encoden und decoden.
Vielleicht hilft dir das ja schon mal ein bißchen weiter. |
Re: Javascript-Funktion in Delphi?
Delphi-Quellcode:
function Escape(const value: string): string;
var pSrcEnd,pSrc: PChar; pDstBeg,pDst: PChar; begin SetLength(Result,Length(value)*3); if Length(Result) = 0 then Exit; pSrc := @Value[1]; pSrcEnd := @Value[Length(value)]; pDst := @Result[1]; pDstBeg := @Result[1]; while pSrc <= pSrcEnd do begin if pSrc^ in ['%',#0..#31,#128..#255] then begin pDst^ := '%'; Inc(pDst); BinToHex(pSrc, pDst, 1); Inc(pDst,2); end else begin pDst^ := pSrc^; Inc(pDst); end; Inc(pSrc); end; SetLength(Result,pDst-pDstBeg); end; function UnEscape(const Value: string): string; var pSrc,pSrcEnd: PChar; pDst,pDstBeg: PChar; begin SetLength(Result,Length(Value)); if Length(Result) = 0 then Exit; pSrc := @Value[1]; pSrcEnd := @Value[Length(Value)]; pDstBeg := @Result[1]; pDst := @Result[1]; while pSrc <= pSrcEnd do begin if pSrc^ = '%' then begin Inc(pSrc); HexToBin(pSrc,pDst,2); Inc(pSrc,2); end else begin pDst^ := pSrc^; Inc(pSrc); end; Inc(pDst); end; SetLength(Result,pDst-pDstBeg); end; |
Re: Javascript-Funktion in Delphi?
@shmia:
Ich habe die while-Schleife in der Unescape-Funktion etwas korrigiert, da deine Funktion einen String der Form "bla%1Tbla" nach dem ersten "bla" abgeschnitten hat. Da ich mir aber nicht sicher bin, ob ich das sicher und effizient programmiert habe, würde ich mich über eine kurze Rückmeldung freuen!
Delphi-Quellcode:
const HexChars = ['0'..'9', 'A'..'F', 'a'..'f'];
Delphi-Quellcode:
While pSrc <= pSrcEnd Do Begin
If (pSrc^ = '%') And ((pSrc+2) <= pSrcEnd) And ((pSrc+1)^ In HexChars) And ((pSrc+2)^ In HexChars) Then Begin Inc(pSrc); HexToBin (pSrc, pDst, 2); Inc(pSrc, 2); End Else Begin pDst^ := pSrc^; Inc(pSrc); End; Inc(pDst); End; |
Re: Javascript-Funktion in Delphi?
Ja, deine Änderung ist soweit ganz ok.
Wenn der String über die Escape()-Funktion codiert wurde, dürfte aber ein String "bla%1Tbla" gar nicht erst entstehen. Aber da man da nicht 100% sicher sein kann, ist deine Änderung wohl angebracht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 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