Ce logiciel décode ou encode des chaînes de caractères ou des fichiers en base 64, un système qui convertit des données binaires en données texte (pour les mails).
Je n'en ai pas trouvé sur internet qui encode ET décode (un seul qui décode) donc je vous en fais profiter :).
J'ai conservé le code de base64.sourceforge.net, qui convertit à la fois les strings et les fichiers.
________________________________________
La version 1.0 traitait une façon originale de faire des threads, mais elle se révélait trop lente (et en réalité ce n'étaient pas des threads). Et l'appli était assez lourde (300ko) à cause des librairies STL. J'ai donc tout refait en C avec de vrais thread lancés avec _beginthread... Ca donne une petite appli de 41 Ko !
________________________________________
Ce code va me servir avant tout à créer un logiciel pour envoyer ou lire des emails avec ou sans pièce jointe, et comme le protocole MIME le veut, les pièces jointes sont encodées en base64 ou UUEncode.
Joyeux noël à tous !
Source / Exemple :
// Je laisse volontairement l'ancien code pour ceux qui n'ont pas vu la source 1.0
// URL de la source 1.0 : http://ordiman85.free.fr/logiciels/sources/Base64Converter%20v1.0%20-%20Source.zip
//
// Attention Ce code n'a plus aucun rapport avec le code de la version 1.1 !
//
// Pour les tâches d'arrière-plan
//
// Une alliance en une boîte de dialogue et la fonction PeekMessage
// Variable définissant la tâche d'arrière-plan à lancer
int CallBackJob = 0;
MSG msg;
// CreateDialog est non-bloquante, on doit donc lancer GetMessage ou PeekMessage
HWND hWnd = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc);
// Boucle (presque) infinie (terminée par return 0;)
for (;;)
{
// Traite tous les messages
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
// Si le programme veut quitter
if (msg.message == WM_QUIT)
return 0;
// Traitement dans Dialogproc
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// Arrivé ici, il n'y a plus de messages, donc on peut continuer la tâche d'arrière-plan
// Choisit la tâche à effectuer selon la variable CallBackJob définie auparavant
switch (CallBackJob)
{
case JOB_ENCODE:
OnEncode(hWnd);
break;
case JOB_DECODE:
OnDecode(hWnd);
break;
default:
// Attend un message
WaitMessage();
break;
}
}
Conclusion :
Version 1.1, prête à compiler avec Code::Blocks
Logiciel disponible sur
http://ordiman85.free.fr/
Si vous trouvez des bugs ou des erreurs, ça donnera lieu à des corrections, promis !
Joyeux noël à tous et bonne année ;)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.