AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

%20 in Leerzeichen Umwandeln

Ein Thema von la.reunion · begonnen am 25. Jun 2006 · letzter Beitrag vom 20. Jul 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Brainstalker
Brainstalker

Registriert seit: 9. Jan 2004
Ort: Berlin
176 Beiträge
 
Delphi 2009 Professional
 
#11

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 17:35
Nö das mit "verschlüsseln" und entschlüsseln ist schon richtig. Denn für mich ist ne Adresse die so aussieht "verschlüsselt": http://www.goo%20gle.de und diese "entschlüsselt": http://www.goo gle.de.

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 äöü.
Michael N.
Brainstalker
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 17:40
für mich auch

aber um goo%20gle zu bekommen, muss encode auf false stehen
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von Brainstalker
Brainstalker

Registriert seit: 9. Jan 2004
Ort: Berlin
176 Beiträge
 
Delphi 2009 Professional
 
#13

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 17:43
Ja stimmt das seh ich auch gerade.
Egal aber die Funktion funktioniert ja trotzdem, ich änder das mal schnell.
Michael N.
Brainstalker
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 17:48
meine auch (aber nur in eine richtung )
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#15

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 17:50
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.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von Brainstalker
Brainstalker

Registriert seit: 9. Jan 2004
Ort: Berlin
176 Beiträge
 
Delphi 2009 Professional
 
#16

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 18:29
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.
Michael N.
Brainstalker
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: %20 in Leerzeichen Umwandeln

  Alt 25. Jun 2006, 19:39
und wenn man ein % Zeichen in der URL hat, wird dieses auch wiederrum von keiner Lösung ordentlich gehandhabt.
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: %20 in Leerzeichen Umwandeln

  Alt 2. Jul 2006, 21:44
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:
#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],"&#8364;"); html[63][7]=7;

  copy(html[65],"&#8218;"); html[65][7]=7;
  copy(html[66],"&#402;"); html[66][7]=7;
  copy(html[67],"&#8222;"); html[67][7]=7;
  copy(html[68],"&#8230;"); html[68][7]=7;
  copy(html[69],"&#8224;"); html[69][7]=7;
  copy(html[70],"&#8225;"); html[70][7]=7;
  copy(html[71],"&#710;"); html[71][7]=7;
  copy(html[72],"&#8240;"); html[72][7]=7;
  copy(html[73],"&#352;"); html[73][7]=7;
  copy(html[74],"&#8249;"); html[74][7]=7;
  copy(html[75],"&#338;"); html[75][7]=7;

  copy(html[77],"&#381;"); html[77][7]=7;

  copy(html[80],"&#8216;"); html[80][7]=7;
  copy(html[81],"&#8217;"); html[81][7]=7;
  copy(html[82],"&#8220;"); html[82][7]=7;
  copy(html[83],"&#8221;"); html[83][7]=7;
  copy(html[84],"&#8226;"); html[84][7]=7;
  copy(html[85],"&#8211;"); html[85][7]=7;
  copy(html[86],"&#8212;"); html[86][7]=7;
  copy(html[87],"&#732;"); html[87][7]=7;
  copy(html[88],"&#8482;"); html[88][7]=7;
  copy(html[89],"&#353;"); html[89][7]=7;
  copy(html[90],"&#8250;"); html[90][7]=7;
  copy(html[91],"&#339;"); html[91][7]=7;

  copy(html[93],"&#382;"); html[93][7]=7;
  copy(html[94],"&#376;"); 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;
}
sind noch nen paar Extras dabei(hab die ganze C-Datei kopiert!)

MfG NEW32!
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
la.reunion

Registriert seit: 30. Apr 2006
152 Beiträge
 
#19

Re: %20 in Leerzeichen Umwandeln

  Alt 20. Jul 2006, 21:31
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;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#20

Re: %20 in Leerzeichen Umwandeln

  Alt 20. Jul 2006, 21:35
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 23:34 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