MIME encode-olt string konvertálása

MIME encode-olt string konvertálása
2006-11-05T11:45:27+01:00
2006-11-05T20:53:03+01:00
2022-11-02T03:40:49+01:00
3delite
Hi!

Van ilyen e-mail-szerűen kódolt string-em: snap
Hogy tudom ezt átkonvertálni sima magyarul olvasható szövegre?

Üdv
3delite
Mutasd a teljes hozzászólást!
Szia!
Lehet, hogy gány megoldás, de én inkább végigfutnék a kódon substringgel, és az = jel utáni 2 karakterre nyomnék egy hextoint-et, majd egy chr()-t.
Mutasd a teljes hozzászólást!

  • Ez: DIMime csak mégjobban összezagyválta!
    Mutasd a teljes hozzászólást!
  • Az Indy komponensel, hogy lehet megcsinálni?
    Mutasd a teljes hozzászólást!
  • Szia!
    Lehet, hogy gány megoldás, de én inkább végigfutnék a kódon substringgel, és az = jel utáni 2 karakterre nyomnék egy hextoint-et, majd egy chr()-t.
    Mutasd a teljes hozzászólást!
  • És tényleg a HexToInt()-el megy!

    Kérhetnénk már a for ciklusban a for loop control variable változtatásának lehetőségét!

    A következő kódot direkt for-ral írtam meg!

    //* MIMEDecodeStr() by 3delite //* Decode a MIME (Base64) encoded line function MIMEDecodeStr(MIMEStr: String): String; var Buffer: String; Botu: Char; i: Integer; StartPos, Offset: Int64; begin try Result := MIMEStr; StartPos := Pos('Q?', Result) + 2; if StartPos > 2 then begin Result := Copy(Result, StartPos, Length(Result)); Buffer := ''; Offset := 0; for i := 1 to Length(Result) - 2 do begin Botu := Result [i + Offset]; if Botu = '=' then begin Buffer := Buffer + Chr(HexToInt(Result [i + 1 + Offset] + Result [i + 2 + Offset])); Inc(Offset, 2); //Inc(i, 2); end else Buffer := Buffer + Result [i + Offset]; if i + Offset >= Length(Result) - 2 then Break; end; Result := ANSIReplaceStr(Buffer, '_', ' '); end; except //* end; end;

    Sajnos a string lehet több sorban is, ebben az esetben soronként kell meghívni, pl.: így.
    Mutasd a teljes hozzászólást!
  • Nem "base64", hanem "Quoted printable" ...
    Mutasd a teljes hozzászólást!
  • Na szép, most akkor melyik?
    A Google jutottam a fenti konklúzióra...
    Egyébként asszem igazad van! A DIMime-on átengedve a stringet ami Base64 dekóder, zagyvaságot adott.
    Nemtudom módosítani az előzőt, szóval:

    //* MIMEDecodeStr() by 3delite //* Decode a MIME (Quoted printable) encoded line function MIMEDecodeStr(MIMEStr: String): String; var Buffer: String; Botu: Char; i: Integer; StartPos, Offset: Int64; begin try Result := MIMEStr; StartPos := Pos('Q?', Result) + 2; if StartPos > 2 then begin Result := Copy(Result, StartPos, Length(Result)); Buffer := ''; Offset := 0; for i := 1 to Length(Result) - 2 do begin Botu := Result [i + Offset]; if Botu = '=' then begin Buffer := Buffer + Chr(HexToInt(Result [i + 1 + Offset] + Result [i + 2 + Offset])); Inc(Offset, 2); //Inc(i, 2); end else Buffer := Buffer + Result [i + Offset]; if i + Offset >= Length(Result) - 2 then Break; end; Result := ANSIReplaceStr(Buffer, '_', ' '); end; except //* end; end;

    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd