[Delphi] &-teken verdwijnt uit strings

Pagina: 1
Acties:

  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 19-08 14:11

Rannasha

Does not compute.

Topicstarter
Ik ben een programma aan het maken dat een cgi-pagina opvraagt en de query die het programma uit moet voeren hangt af van wat variabelen, die ik op de volgende manier aan elkaar plak:

Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&' + param2 + '&' + param3;


Zo ongeveer dus. Nu is het probleem dat de &-tekens wegvallen uit de string. Het opvragen van de pagina werkt dus niet, en als ik de url-string weergeef dan krijg ik precies te zien wat er hoort te staan, maar de &-tekens zijn er gewoon tussenuit. Als ik de ASCII-code voor & (#38) gebruik in plaats van het teken zelf, dan gebeurd dit ook. Iemand enig idee hoe dit komt en wat ertegen te doen is ?

[ Voor 5% gewijzigd door Rannasha op 24-01-2003 21:55 ]

|| Vierkant voor Wiskunde ||


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 04-08 07:59

chem

Reist de wereld rond

en kom je erbij dat ze 'wegvallen' ?

Klaar voor een nieuwe uitdaging.


  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 19-08 14:11

Rannasha

Does not compute.

Topicstarter
chem schreef op 24 January 2003 @ 22:00:
en kom je erbij dat ze 'wegvallen' ?
Als ik de string weergeef staan ze er niet meer in. En bovendien werkt m'n HTTP-oproep niet, dus ik neem aan dat ze ook echt weg zijn.

|| Vierkant voor Wiskunde ||


Verwijderd

Species5618 schreef op 24 januari 2003 @ 21:54:

Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&' + param2 + '&' + param3;


Zo ongeveer dus. Nu is het probleem dat de &-tekens wegvallen uit de string. Het opvragen van de pagina werkt dus niet, en als ik de url-string weergeef dan krijg ik precies te zien wat er hoort te staan, maar de &-tekens zijn er gewoon tussenuit. Als ik de ASCII-code voor & (#38) gebruik in plaats van het teken zelf, dan gebeurd dit ook. Iemand enig idee hoe dit komt en wat ertegen te doen is ?
Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&' + param2 + '&' + param3;

  • tazitiz
  • Registratie: Augustus 1999
  • Laatst online: 09-06 22:25

tazitiz

dbprutser

en als je double quotes ipv single quotes gebruikt?

  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 19-08 14:11

Rannasha

Does not compute.

Topicstarter
Verwijderd schreef op 24 January 2003 @ 22:03:
[...]


Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&' + param2 + '&' + param3;
als ik dat doe dan krijg ik keurig dingen in de vorm van "url/file.cgi?param1amp;param2amp;param3" etc...

|| Vierkant voor Wiskunde ||


  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 19-08 14:11

Rannasha

Does not compute.

Topicstarter
tazitiz schreef op 24 January 2003 @ 22:04:
en als je double quotes ipv single quotes gebruikt?
Delphi lust geen dubbele quotes om strings :)

|| Vierkant voor Wiskunde ||


Verwijderd

Species5618 schreef op 24 januari 2003 @ 21:54:
Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&' + param2 + '&' + param3;
Probeer eens met &&, dus:

Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&&' + param2 + '&&' + param3;

[ Voor 52% gewijzigd door Verwijderd op 24-01-2003 22:11 ]


  • Rannasha
  • Registratie: Januari 2002
  • Laatst online: 19-08 14:11

Rannasha

Does not compute.

Topicstarter
Verwijderd schreef op 24 January 2003 @ 22:11:
[...]


Probeer eens met &&, dus:

Delphi:
1
url := 'http://url-stuff-here/file.cgi?' + param1 + '&&' + param2 + '&&' + param3;
http://bdn.borland.com/article/0,1410,15807,00.html <--- zelfde verhaal hier... en dit werkt... thx !

|| Vierkant voor Wiskunde ||


Verwijderd

Species5618 schreef op 24 January 2003 @ 22:08:
[...]


als ik dat doe dan krijg ik keurig dingen in de vorm van "url/file.cgi?param1amp;param2amp;param3" etc...
Dan vraag ik me af wat url voor variabele is?
Delphi:
1
ShowMessage('http://url-stuff-here/file.cgi?' + param1 + '&amp;' + param2 + '&amp;' + param3;

moet het volgende resultaat opleveren...
Delphi:
1
http://url-stuff-here/file.cgi?param1&amp;param2&amp;param3

Als je de url laat tonen in een label/button o.i.d. dan kan het inderdaad zo zijn dat de & als een commando gezien wordt om te 'underscoren' en te gebruiken als hotkey.
ik zou twee variabelen maken:
Delphi:
1
2
 DisplayVar := 'http://url-stuff-here/file.cgi?' + param1 + '&&amp;' + param2 + '&&amp;' + param3;
 HttpVar := 'http://url-stuff-here/file.cgi?' + param1 + '&amp;' + param2 + '&amp;' + param3;


NB.
& moet in de url gebruikt worden en zou door de webserver intern omgezet moeten worden naar het ampersand teken (&).

[ Voor 45% gewijzigd door Verwijderd op 20-08-2003 15:27 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 24 January 2003 @ 22:25:
Als je de url laat tonen in een label/button o.i.d. dan kan het inderdaad zo zijn dat de & als een commando gezien wordt om te 'underscoren' en te gebruiken als hotkey.
De Windows standaard functie om text te tekenen doet dat standaard bij alle ampersands.

Nu weet ik niet hoe hij de string toont, maar mocht ie 'm zelf painten met DrawText (zal wel niet) dan kun je de DT_NOPREFIX flag gebruiken. Bij controls moet je inderdaad de ampersand escapen door hem dubbel te plaatsen.

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 24 January 2003 @ 22:25:
& moet in de url gebruikt worden en zou door de webserver intern omgezet moeten worden naar het ampersand teken (&).
Dat moet zeer zeker niet in 99% van de gevallen. Iedere API/framework waar ik tot nu toe mee gewerkt heb behalve raw WinINet doet dit namelijk via de UrlEscape call uit (ik geloof) de IpHelper API. Als je het zelf al gedaan hebt krijgt de webserver een double-escaped URL voor z'n kiezen.

Professionele website nodig?


Verwijderd

curry684 schreef op 25 January 2003 @ 02:16:
[...]

Dat moet zeer zeker niet in 99% van de gevallen. Iedere API/framework waar ik tot nu toe mee gewerkt heb behalve raw WinINet doet dit namelijk via de UrlEscape call uit (ik geloof) de IpHelper API. Als je het zelf al gedaan hebt krijgt de webserver een double-escaped URL voor z'n kiezen.
voor de historie, search & compleetheid van dit topic:

Wat ik wilde zeggen is het volgende
Ampersands in URI attribute values


GOT maakt van & a m p ; (zonder spaties) --> &

[ Voor 9% gewijzigd door Verwijderd op 20-08-2003 15:30 . Reden: & check ]

Pagina: 1