Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   %20 in Leerzeichen Umwandeln (https://www.delphipraxis.net/72095-20-leerzeichen-umwandeln.html)

la.reunion 25. Jun 2006 15:54


%20 in Leerzeichen Umwandeln
 
Hallo, ich möchte in kelines prog schriben mit dem ich Leerzeichen %20 umwandeln kann und anders rum wie amche cih das?
(Einen Lik umwandeln!!!)#

Lg La.Reunion

arbu man 25. Jun 2006 15:56

Re: %20 in Leerzeichen Umwandeln
 
Delphi-Referenz durchsuchenStringReplace

la.reunion 25. Jun 2006 15:58

Re: %20 in Leerzeichen Umwandeln
 
danke!

Mhh das verstehe ich nciht ganz kannst du mir ein beispiel dazu posten?

vlees91 25. Jun 2006 16:01

Re: %20 in Leerzeichen Umwandeln
 
vll so (nicht probiert)

Delphi-Quellcode:
function URLEncode(URL: string): string;
var
  i:integer;
  URL2: string;
begin
  URL2 := '';
  for i := 0 to length(URL) - 1 do
  begin
    if URL[i] in ['a'..'z', 'A'..'Z', '.', '-', '_', '0'..'9'] {kontrolle erweitert...} then URL2 := URL2 + '%' + IntToHex(ord(URL[i]), 2) //in der Eile die umwandlung vergessen
    else URL2 := URL2 + URL[i];
  end;
  //result vergessen
  result := URL2;
end;

Muetze1 25. Jun 2006 16:03

Re: %20 in Leerzeichen Umwandeln
 
Naja, ich würde das nicht so einfach machen, weil das % Zeichen selber auch escape't werden kann. Wenn man ein % in der URL haben möchte, dann schreibt man %%, somit sollte eine URL von "%%20" falsch von dir verarbeitet werden. Auch fehlen dir dann z.B. die Punkte (%2F) etc. Geh lieber die Zeichenkette durch und bau alle Elemente mit % und einem 2-stelligem Hexadezimalwert um (es ist der ANSI Code des Zeichens angegeben) und ignorieren %% Zeichen. Dann biste auf der sicheren Seite.

la.reunion 25. Jun 2006 16:05

Re: %20 in Leerzeichen Umwandeln
 
??! Mhhh ich hatte mir das irgendwie unkomplizierter vorgestellt :-)

vlees91 25. Jun 2006 16:07

Re: %20 in Leerzeichen Umwandeln
 
@muetze1:ist das auf meinen oder auf arbu mans bezogen?
meine funktioniert imho so wie bei php urlencode bzw rawurlencode

marabu 25. Jun 2006 16:16

Re: %20 in Leerzeichen Umwandeln
 
Hallo,

wer die Indy-Komponenten verwendet, der kann die Methoden UrlEncode() und UrlDecode() von TIdURI (V9) benutzen um die percent escapes zu erstellen oder aufzulösen.

Grüße vom marabu

Edit: ich hänge mal die eine Zeile Code unauffällig hier rein, damit der schwungvolle thread nicht abrupt zum Halten kommt:

Delphi-Quellcode:
uses
  IdURI;

function URLDecode(uri: String): String;
begin
  Result := TIdURI.URLDecode(uri);
end;
Das Prozentzeichen muss übrigens %25 codiert sein - %% habe ich im Standard nicht entdecken können.

Brainstalker 25. Jun 2006 16:21

Re: %20 in Leerzeichen Umwandeln
 
Ich hatte da mal eine Funktion geschrieben. Allerdings war das ne Arbeit von 5 Minuten oder so, weil ich mal schnell eben eine brauchte. Es sind deshalb auch keine Kommentare vorhanden.
Delphi-Quellcode:
function TranslateURL(URL: string; Encode: bool): string;
var
  i: integer;
  tmp: string;
begin
  result := 'ERROR';
  i := 1;
  tmp := '';
  URL := LowerCase(URL);

  if not Encode then
    while i <= Length(URL) do begin
      if (URL[i] = '%') and (URL[i+1] in ['0'..'9', 'a'..'f'])
      and (URL[i+2] in ['0'..'9', 'a'..'f']) then begin
        tmp := tmp + chr(StrToInt('$' + Copy(URL, i+1, 2)));
        inc(i, 2);
      end else
        tmp := tmp + URL[i];
      inc(i);
    end;

  if Encode then
    while i <= Length(URL) do begin
      if URL[i] in ['0'..'9', 'a'..'z', '.', '-', '_'] then
        tmp := tmp + URL[i]
      else
        tmp := tmp + '%' + IntToHex(ord(URL[i]), 2);
      inc(i);
    end;

  result := tmp;
end;
Falls irgendwas näher erklärt werden soll, einfach nachfragen. Aufgerufen wird das Ganze so:
Delphi-Quellcode:
Encode:
URL := TranslateURL(URL, true);

Decode:
URL := TranslateURL(URL, false);
MfG Brainstalker

[Edit] , hinzugefügt :oops:
[Edit2] jetzt sollte das mit Encode stimmen.

vlees91 25. Jun 2006 16:23

Re: %20 in Leerzeichen Umwandeln
 
Zitat:

Zitat von Brainstalker
Delphi-Quellcode:
Encode:
URL := TranslateURL(URL, true);

Decode:
URL := TranslateURL(URL[b],[/b] false);

und Encode ist das kodieren und bei dir wird bei Encode := false kodiert

bei der kodierung nicht die großbuchstaben vergessen... (sry hab das lowercase übersehen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Seite 1 von 2  1 2      

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