Umlaute in E-Mail Adressen kodieren (IDNA)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von dige »

Kann man die Dll auch ohne Unicode laden? Oder geht sows nicht?
Zumindest crasht der nachfolgende Code (compiliert ohne UniCode)

Code: Alles auswählen

Prototype  idna_decode(a, b, c, d, e, f)
Prototype  idna_encode(a, b, c, d, e, f)

Global idna_decode.idna_decode
Global idna_encode.idna_encode

Procedure.i idna_LoadDLL()
  Protected hDLL.i

  hDLL = OpenLibrary(#PB_Any, "idna.dll")
  If hDLL <> 0
    idna_decode = GetFunction(hDLL, "decode")
    idna_encode = GetFunction(hDLL, "encode")
    ProcedureReturn hDLL
  EndIf

  ProcedureReturn #False
EndProcedure

Define.s dummy.s = "email@café.org"
Define.i mem

Procedure MakeUnicode(original.s, *converted.String)
  *converted\s=Space(2*Len(original.s))
  MultiByteToWideChar_(#CP_ACP,0,@original,Len(original),@*converted\s,Len(*converted\s))
  ProcedureReturn
EndProcedure 

converted.String
MakeUnicode(dummy, @converted)

If idna_LoadDLL()
  idna_encode(0, 0, @converted, 0, 0, 0) 
  MessageRequester( "IDNA Encoded", PeekS(@converted))
Else
  MessageRequester( "Error", "idna.dll not found" )
EndIf
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
xXRobo_CubeXx
Beiträge: 120
Registriert: 12.06.2015 16:08
Computerausstattung: Version 5.41 LTS
Wohnort: Wohnort
Kontaktdaten:

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von xXRobo_CubeXx »

Warum ohne Unicode? Neuere PB Versionen haben nur noch Unicode
http://www.purebasic.fr/blog/?p=452 !!!
Version 5.41 LTS :)
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von dige »

Yap, aber ich will das in ein CGI Modul einbauen und das geht nur ohne UC..
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von Bisonte »

und wie ist es mit dem Pseudo-Types ? Die DLL Aufrufe per Prototype herstellen oder im Speicher die Strings umwandeln sollte eigentlich funktionieren.

Hast du eine Quelle für die DLL ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von dige »

Der Quellecode liegt im Zip-Archiv bei. Mit Pseudotypes kenne ich mich nicht
so richtig aus :-\ ... hatte aber mal was mit .p-unicode probiert. Führte immer zu IMAs...
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
xXRobo_CubeXx
Beiträge: 120
Registriert: 12.06.2015 16:08
Computerausstattung: Version 5.41 LTS
Wohnort: Wohnort
Kontaktdaten:

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von xXRobo_CubeXx »

Was sind "IMAs"?
Version 5.41 LTS :)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von RSBasic »

Invalid Memory Access, also ungültiger Speicherzugriff.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von ts-soft »

Code: Alles auswählen

Prototype  idna_decode(a, b, c.p-Unicode, d, e, f)
Prototype  idna_encode(a, b, c.p-Unicode, d, e, f)

Global idna_decode.idna_decode
Global idna_encode.idna_encode

Procedure.i idna_LoadDLL()
  Protected hDLL.i

  hDLL = OpenLibrary(#PB_Any, "idna.dll")
  If hDLL <> 0
    idna_decode = GetFunction(hDLL, "decode")
    idna_encode = GetFunction(hDLL, "encode")
    ProcedureReturn hDLL
  EndIf

  ProcedureReturn #False
EndProcedure

Define.s dummy.s = "email@café.org"
; Define.i mem

; Procedure MakeUnicode(original.s, *converted.String)
;   *converted\s=Space(2*Len(original.s))
;   MultiByteToWideChar_(#CP_ACP,0,@original,Len(original),@*converted\s,Len(*converted\s))
;   ProcedureReturn
; EndProcedure
; 
; converted.String
; MakeUnicode(dummy, @converted)

If idna_LoadDLL()
  idna_encode(0, 0, dummy.s, 0, 0, 0)
;  MessageRequester( "IDNA Encoded", PeekS(@converted))
Else
;  MessageRequester( "Error", "idna.dll not found" )
EndIf
Nicht getested, aber sollte so funktionieren!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
C h r i s :)
Beiträge: 56
Registriert: 12.11.2015 17:41

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von C h r i s :) »

Nicht getested, aber sollte so funktionieren!
schrei uns doch nicht so an :)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Umlaute in E-Mail Adressen kodieren (IDNA)

Beitrag von NicTheQuick »

C h r i s :) hat geschrieben:
Nicht getested, aber sollte so funktionieren!
schrei uns doch nicht so an :)
:?

Hast du sonst nichts beizutragen?
Antworten