![]() |
Re: %20 in Leerzeichen Umwandeln
Nö das mit "verschlüsseln" und entschlüsseln ist schon richtig. Denn für mich ist ne Adresse die so aussieht "verschlüsselt":
![]() ![]() Auf Großbuchstaben muss auch nicht geachtet werden, da der String vorher mit LowerCase bearbeitet wird. Das einzige was dann eben noch nicht richtig unterstützt wird sind äöü. |
Re: %20 in Leerzeichen Umwandeln
für mich auch
aber um goo%20gle zu bekommen, muss encode auf false stehen |
Re: %20 in Leerzeichen Umwandeln
Ja stimmt das seh ich auch gerade. :wall:
Egal aber die Funktion funktioniert ja trotzdem, ich änder das mal schnell. :oops: |
Re: %20 in Leerzeichen Umwandeln
meine auch ;) (aber nur in eine richtung ;))
|
Re: %20 in Leerzeichen Umwandeln
StringReplace gefällt Euch wohl nicht ?
übrigens Brainstalker, Deine Funktion ist nicht save, Du greifst auf i+1 zu und prüfst nicht, ob i+1 kleiner oder gleich der Länge vom String ist. |
Re: %20 in Leerzeichen Umwandeln
Wie gesagt ich hab das mal in 5 Minuten gebastelt weil ich ein paar URLs hatte und keine Lust die selbst zu übersetzen. Außerdem kann der Threadersteller ja auch noch bisl Hand anlegen und die Save machen, ist ja nicht viel Arbeit. Mal sehen vielleicht änder ich die ja nochmal ab.
Naja String Replace kann man natürlich anwenden wenn man nur Leerzeichen oder so ersetzen will, aber die Funktion ist eben dafür gedacht (fast) alle Zeichen zu ersetzen. Sonderzeichen könnten noch ein Problem darstellen, aber man kanns ja noch erweitern. Ich setz mich nachher nochmal kurz hin und werde sie vielleicht ein bisschen abändern. |
Re: %20 in Leerzeichen Umwandeln
und wenn man ein % Zeichen in der URL hat, wird dieses auch wiederrum von keiner Lösung ordentlich gehandhabt.
|
Re: %20 in Leerzeichen Umwandeln
Hi!
Ich hab auch mal ne Lösung für das Problem in 6 Minuten geschrieben(leider C) kann aber nach veränderungen als dll kompiliert werden und auch in delphi-programmen genutzt werden.
Code:
sind noch nen paar Extras :thumb: dabei(hab die ganze C-Datei kopiert!)
#include<stdio.h>
#include<string.h> int itoaY(int i, char *a, int z){ int v=1,w=0; while(i/v>=1) v*=z;v/=z; while(v>=1) a[w]=i/v,i-=a[w]*v,a[w]+=(a[w]<=9)?'0':'A'-10,w++,v/=z; a[w++]='\0'; return w; } int copy(char *x, char *y){ int i=0; while(y[i]!='\0') x[i]=y[i++]; x[i+1]='\0'; return i; } int cmp(char *a1, char *a2, int n){ int i; i=0; while(i<=n-1){ if(a1[i]!=a2[i]) return i+1; i++; } return 0; } int cpy(char *a1, char *a2, int n){ int i; i=0; while(i<=n){ a1[i]=a2[i]; i++; } return i; } int setlen(char *s, char *dest, int olen, int nlen, char null){ olen-=nlen; while(nlen>=0) (dest[nlen]=(nlen+olen>=0)?s[nlen+olen]:null),nlen--; return 0; } void C(char c[192][8]){ int i,j; for(i=j=0;i<256;i++,j++){ i=(i<1)?1:(i==32)?33:(i==47)?58:(i==65)?91:(i==97)?123:i; c[j][0]=i; c[j][7]=1; } c[j][0]=' '; c[j][7]=1; } void URL(char url[192][8]){ int i,j; char t[4]; for(i=j=0;i<256;i++,j++){ i=(i<1)?1:(i==32)?33:(i==47)?58:(i==65)?91:(i==97)?123:i; url[j][0]='%'; setlen(t,&(url[j][1]),itoaY(i,t,16),3,'0'); url[j][7]=3; } url[127][1]='C'; url[j][0]='+'; url[j][7]=1; } void HTML(char html[192][8]){ int i,j; for(i=j=0;i<256;i++,j++){ i=(i<1)?1:(i==32)?33:(i==47)?58:(i==65)?91:(i==97)?123:i; html[j][0]='&'; html[j][1]='#'; html[j][7]=itoaY(i,&(html[j][2]),10)+2; html[j][html[j][7]-1]=';'; } copy(html[9]," "); html[9][7]=4; html[12][7]=0; copy(html[63],"€"); html[63][7]=7; copy(html[65],"‚"); html[65][7]=7; copy(html[66],"ƒ"); html[66][7]=7; copy(html[67],"„"); html[67][7]=7; copy(html[68],"…"); html[68][7]=7; copy(html[69],"†"); html[69][7]=7; copy(html[70],"‡"); html[70][7]=7; copy(html[71],"ˆ"); html[71][7]=7; copy(html[72],"‰"); html[72][7]=7; copy(html[73],"Š"); html[73][7]=7; copy(html[74],"‹"); html[74][7]=7; copy(html[75],"Œ"); html[75][7]=7; copy(html[77],"Ž"); html[77][7]=7; copy(html[80],"‘"); html[80][7]=7; copy(html[81],"’"); html[81][7]=7; copy(html[82],"“"); html[82][7]=7; copy(html[83],"”"); html[83][7]=7; copy(html[84],"•"); html[84][7]=7; copy(html[85],"–"); html[85][7]=7; copy(html[86],"—"); html[86][7]=7; copy(html[87],"˜"); html[87][7]=7; copy(html[88],"™"); html[88][7]=7; copy(html[89],"š"); html[89][7]=7; copy(html[90],"›"); html[90][7]=7; copy(html[91],"œ"); html[91][7]=7; copy(html[93],"ž"); html[93][7]=7; copy(html[94],"Ÿ"); html[94][7]=7; html[j][0]=' '; html[j][7]=1; } int convert(char *in, char *out, void (*fin)(char [192][8]), void (*fout)(char [192][8])){ int i,j,k=0; char io[2][192][8]; fout(io[0]); fin(io[1]); for(i=0;in[i]!='\0';i++,k++){ for(j=0;j<=191 && j!=-1;j++) if(!cmp(&(in[i]),io[1][j],io[1][j][7])) cpy(&(out[k]),io[0][j],io[0][j][7]),i+=io[1][j][7],k+=io[0][j][7],j=-1; if(j!=-1) out[k]=in[i]; } out[k++]='\0'; return k; } int GetParamElement(char *s, char *en, char *element){ int i=0,lp,j=0; lp=strlen(en); while(cmp(&(s[i]),en,lp) && s[i]!='\0') i++; i+=lp; while(s[i]!='&' && s[i]!='\0') element[j++]=s[i++]; element[j++]='\0'; return j; } int GetParamElementC(char *s, char *en, char *element){ int i=0,lp,j=0; lp=strlen(en); while(cmp(&(s[i]),en,lp) && s[i]!='\0') i++; i+=lp; while(s[j+i]!='&' && s[j+i]!='\0') j++; s[i+j]='\0'; lp=convert(&(s[i]),element,URL,C); s[i+j]='&'; return lp; } int GetParamElementHTML(char *s, char *en, char *element){ int i=0,lp,j=0; lp=strlen(en); while(cmp(&(s[i]),en,lp) && s[i]!='\0') i++; i+=lp; while(s[j+i]!='&' && s[j+i]!='\0') j++; s[i+j]='\0'; lp=convert(&(s[i]),element,URL,HTML); s[i+j]='&'; return lp; } void incHTML(char *x) { char c[256]; FILE *f; long l=0; if(f=fopen(x,"rb")){ while(!feof(f)){ fread(c,256,1,f); fwrite(c,ftell(f)-l,1,stdout); l+=256; } } } int main(void){ //Beispiel char d[256]="index.exe?pp=Hello+World%21%0A123&ff=11",v[256]; GetParamElementHTML(d,"pp=",v); printf("%s",v); return 0; } MfG NEW32! |
Re: %20 in Leerzeichen Umwandeln
ICh lass auhc mal wieder was von mir hören.
Delphi-Quellcode:
function wandlelinkum(link : string) : string;
var position,zahl : integer; zeichen : char; begin result := link; while pos('%',result) <> 0 do begin position := pos('%',result) + 1; zahl := strtoint('$'+copy(result,position,2)); zeichen := char(zahl); delete(result,position - 1,3); insert(zeichen,result,position - 1); end; end; |
Re: %20 in Leerzeichen Umwandeln
Grundlegend: Der Code ist gut, da er dadurch alle Codes beachtet. So meinte ich das auch. Aber eine Anmerkung dazu: Du löscht fest 2 Zeichen - aber es kann theoretisch auch nur eine Zahl nach dem % kommen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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 by Thomas Breitkreuz