AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Portierung JavaScript

Ein Thema von travis2010 · begonnen am 5. Okt 2010 · letzter Beitrag vom 5. Okt 2010
Antwort Antwort
travis2010

Registriert seit: 5. Okt 2010
3 Beiträge
 
#1

Portierung JavaScript

  Alt 5. Okt 2010, 10:08
Delphi-Version: 2010
Hallo
ich versuche zur Zeit den folgenden JavaScript Code nach Delphi zu portieren. Doch leider sind da noch ein paar Dingem die ich nicht hinbekomme.

Code:
<script language="javascript">
function Decoder(s){
var s1=unescape(s.substr(0,s.length-1)); var t='';
for(i=0;i<s1.length;i++)t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));
return unescape(t);
}
</script>
Folgenden Code habe ich bereits:
Delphi-Quellcode:
function Decoder(s:String): String;
var
  s1,t: String;
  i: Integer;
begin
  s1 := Copy(s,0,Length(s)-1);
  for i := 0 to Length(s1) - 1 do
  begin
    t := t+'';
  end;
  Result := t;
end;
Wie kann ich jetzt die Funktion "unescape" nachbilden?
Wie portiere ich folgende Zeile "t+=String.fromCharCode(s1.charCodeAt(i)-s.substr(s.length-1,1));"

Vielen Dank für eure Hilfe
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Portierung JavaScript

  Alt 5. Okt 2010, 10:47
Ich dachte erst an C-Escape Sequenzen (dafür wäre eine StringReplace Orgie gegangen), aber scheint bei JavaScript eine Umkehrung von Urlencode zu sein. Also mal nach Urldecode suchen.

Ob das alles ist oder doch was anderes... muss ich leider passen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Portierung JavaScript

  Alt 5. Okt 2010, 10:51
Weißt du denn was die Funktion
Code:
unescape
in JavaScript macht?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Portierung JavaScript

  Alt 5. Okt 2010, 11:02
Ach ja, Substring ist Zero-Based, also das
Code:
var s1 = unescape( >>> s.substr(0,s.length-1) <<< );
gibt den kompletten String zurück (weis nicht, warum das gemacht wird)

aber das
s1 := Copy(s,0,Length(s)-1); .
den String abzüglich des letzten Zeichens(weil ich denke, das Copy aus der 0 automatisch eine 1 macht), vergleichbar wäre wohl
s1 := Copy(s,1, Length(s)); .

Hab' aber noch nicht zu Mittag gegessen, also kann auch gerade falsch liegen.

Geändert von Satty67 ( 5. Okt 2010 um 11:13 Uhr)
  Mit Zitat antworten Zitat
travis2010

Registriert seit: 5. Okt 2010
3 Beiträge
 
#5

AW: Portierung JavaScript

  Alt 5. Okt 2010, 19:46
Erstmal vielen Dank für die Antworten

Also das unescape habe ich jetzt über IdURI und URLDecode gelöst.

Zum substr:
Code:
var s='1234567890';
document.write(s.substr(0,s.length-1));
ergibt
123456789
also wird das letzte Zeichen weggelassen.

Jetzt fehlt mir also nur noch
String.fromCharCode
und
charCodeAt
  Mit Zitat antworten Zitat
travis2010

Registriert seit: 5. Okt 2010
3 Beiträge
 
#6

AW: Portierung JavaScript

  Alt 5. Okt 2010, 20:42
Ich habe es jetzt hinbekommen
Hier die komplette Funktion, für die es interessiert:
Delphi-Quellcode:
function Decoder(s:String): String;
var
  s1,t: String;
  i: Integer;
begin
  s1 := UTF8ToString(TIdURI.URLDecode(Copy(s,0,Length(s)-1)));
  for i := 0 to Length(s) - 1 do
  begin
    t := t+CHR(Ord(s1[i])-StrToInt(Copy(s,length(s),1)));
  end;
  Result := TIdURI.URLDecode(t);
end;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#7

AW: Portierung JavaScript

  Alt 5. Okt 2010, 21:48
also wird das letzte Zeichen weggelassen.
Ja, war wohl ein Denkfehler. Parameter sind ja nicht von/bis sondern von/anzahl
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz