Migration of code from Pascal to C++
Fermé
khaliloenit
Messages postés
34
Date d'inscription
samedi 6 octobre 2007
Statut
Membre
Dernière intervention
27 octobre 2009
-
7 juil. 2009 à 12:28
mamiemando Messages postés 33325 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 octobre 2024 - 6 sept. 2009 à 13:42
mamiemando Messages postés 33325 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 22 octobre 2024 - 6 sept. 2009 à 13:42
A voir également:
- Migration of code from Pascal to C++
- Turbo pascal download - Télécharger - Édition & Programmation
- Code asci - Guide
- My pascal - Télécharger - Édition & Programmation
- Code puk bloqué - Guide
- Qwerty to azerty - Guide
5 réponses
mamiemando
Messages postés
33325
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 octobre 2024
7 799
7 juil. 2009 à 19:43
7 juil. 2009 à 19:43
Pour faire une liste de chaîne il suffit d'utiliser la STL : std::list<std::string>
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
Pour le memory stream le plus simple c'est d'allouer un bloc mémoire (par exemple avec un malloc) et d'écrire dedans avec la fonction write :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/write.2.html
Pour manipuler un flux sur une chaîne utilise un std::istringstream ou un std::ostringstream.
Pour manipuler un handle, cf la doc microsoft.
Bonne chance
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
https://community.hpe.com/t5/custom/page/page-id/HPPSocialUserSignonPage?redirectreason=permissiondenied&referer=https%3A%2F%2Fcommunity.hpe.com%2Ft5%2FServers-Systems-The-Right%2FSGI-com-Tech-Archive-Resources-now-retired%2Fba-p%2F6992583
Pour le memory stream le plus simple c'est d'allouer un bloc mémoire (par exemple avec un malloc) et d'écrire dedans avec la fonction write :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man2/write.2.html
Pour manipuler un flux sur une chaîne utilise un std::istringstream ou un std::ostringstream.
Pour manipuler un handle, cf la doc microsoft.
Bonne chance
mamiemando
Messages postés
33325
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 octobre 2024
7 799
8 juil. 2009 à 00:31
8 juil. 2009 à 00:31
TStringList : je vais essayer avec ce qui vous avez dis
Voici un exemple :
Ce qui donne à l'exécution :
j'ai trouvé quelques chose comme ca ( TMemoryStream ^ ms = gcnew
Ca c'est pas du C++ tu peux me croire.
TMemoryStream; ) il parait qu'elle marche
Pas compris.
TStringStream : j'ai trouvé stringstream object ?
Non c'est vraiment std::ostringstream (pour écrire dans un buffer) et std::istringstream (pour lire dans un buffer).
Ce qui donne à l'exécution :
THandleStream : pas de résultat
C'est normal la notion de handle n'existe pas spécialement sous linux et sous windows il y a sans doute des fonctions spécifiques. La vraie question c'est que veux-tu faire avec des handle.
Bonne chance
Voici un exemple :
#include <list> #include <string> #include <iostream> int main(){ // Préparer des chaînes std::string s1 = "plop", s2 = "pouet", s3 = "tapir"; // Mettre les chaînes au bout d'une liste (initialement vide) std::list<std::string> l; l.push_back(s1); l.push_back(s2); l.push_back(s3); // Ecrire la liste std::list<std::string>::const_iterator lit (l.begin()), lend(l.end()); for(;lit!=lend;++lit) std::cout << *lit << std::endl; return 0; }
Ce qui donne à l'exécution :
plop pouet tapir
j'ai trouvé quelques chose comme ca ( TMemoryStream ^ ms = gcnew
Ca c'est pas du C++ tu peux me croire.
TMemoryStream; ) il parait qu'elle marche
Pas compris.
TStringStream : j'ai trouvé stringstream object ?
Non c'est vraiment std::ostringstream (pour écrire dans un buffer) et std::istringstream (pour lire dans un buffer).
#include <sstream> #include <iostream> int main(){ std::ostringstream oss; oss << "plop" << 1.23 << ' ' << 69; std::cout << oss.str(); return 0; }
Ce qui donne à l'exécution :
plop1.23 69
THandleStream : pas de résultat
C'est normal la notion de handle n'existe pas spécialement sous linux et sous windows il y a sans doute des fonctions spécifiques. La vraie question c'est que veux-tu faire avec des handle.
Bonne chance
khaliloenit
Messages postés
34
Date d'inscription
samedi 6 octobre 2007
Statut
Membre
Dernière intervention
27 octobre 2009
8 juil. 2009 à 01:09
8 juil. 2009 à 01:09
- Pour TMemoryStream ^ ms = gcnew TMemoryStream :
le compilateur l'a accepter en modifiant une option dans les propriétés du projet et je peux travailler avec elle . Alors je peux s'assurer d'elle ou non à ton avis ?
- Pour Handle j'ai un fichier que je veux l'ouvrir -> stocker son contenu dans ce Handle stream ensuite faire le traitement necessaire pour enfin stocker le contenu de ce Handle stream dans l'object MemoryStream .
Merci pour ta compréhension et ton aide
le compilateur l'a accepter en modifiant une option dans les propriétés du projet et je peux travailler avec elle . Alors je peux s'assurer d'elle ou non à ton avis ?
- Pour Handle j'ai un fichier que je veux l'ouvrir -> stocker son contenu dans ce Handle stream ensuite faire le traitement necessaire pour enfin stocker le contenu de ce Handle stream dans l'object MemoryStream .
Merci pour ta compréhension et ton aide
mamiemando
Messages postés
33325
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 octobre 2024
7 799
8 juil. 2009 à 10:50
8 juil. 2009 à 10:50
le compilateur l'a accepter en modifiant une option dans les propriétés du projet et je peux travailler avec elle . Alors je peux s'assurer d'elle ou non à ton avis ?
Mais tu programmes vraiment en C++ ? Car je n'ai jamais vu cette syntaxe ? Ou alors ce sont des macros et des fonctions spécifiques à ton code.
- Pour Handle j'ai un fichier que je veux l'ouvrir -> stocker son contenu dans ce Handle stream ensuite faire le traitement necessaire pour enfin stocker le contenu de ce Handle stream dans l'object MemoryStream .
En C++ pour manipuler un flux sur un fichier on utilise un std::ifstream ou un std::ofstream. Exemple :
Bonne chance
Mais tu programmes vraiment en C++ ? Car je n'ai jamais vu cette syntaxe ? Ou alors ce sont des macros et des fonctions spécifiques à ton code.
- Pour Handle j'ai un fichier que je veux l'ouvrir -> stocker son contenu dans ce Handle stream ensuite faire le traitement necessaire pour enfin stocker le contenu de ce Handle stream dans l'object MemoryStream .
En C++ pour manipuler un flux sur un fichier on utilise un std::ifstream ou un std::ofstream. Exemple :
#include <fstream> #include <iostream> int main(){ std::ofstream ofs("pouet.txt"); if(!ofs){ std::cerr << "can't write pouet.txt" << std::endl; return 1; } ofs << "plop" << 1.23; ofs.close(); return 0; }
Bonne chance
khaliloenit
Messages postés
34
Date d'inscription
samedi 6 octobre 2007
Statut
Membre
Dernière intervention
27 octobre 2009
8 juil. 2009 à 12:37
8 juil. 2009 à 12:37
Merci pour toi mamiemando , vraiment merci pour ton aide.
Prière d'accepter mes meilleurs salutations et de me permet de poser des autres questions en cas de blocage. :)
Prière d'accepter mes meilleurs salutations et de me permet de poser des autres questions en cas de blocage. :)
mamiemando
Messages postés
33325
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 octobre 2024
7 799
9 juil. 2009 à 01:30
9 juil. 2009 à 01:30
Bien entendu, n'hésite pas ;-)
khaliloenit
Messages postés
34
Date d'inscription
samedi 6 octobre 2007
Statut
Membre
Dernière intervention
27 octobre 2009
6 sept. 2009 à 02:57
6 sept. 2009 à 02:57
Bonsoir mamiemando,
S'il vous plaît avez vous une idée sur ce que veut dire
array of array[0..1] of integer
c'est en pascal (Delphi plus précisément)?
Aussi son analogue en c++ ?
Merci pour l'aide.
S'il vous plaît avez vous une idée sur ce que veut dire
array of array[0..1] of integer
c'est en pascal (Delphi plus précisément)?
Aussi son analogue en c++ ?
Merci pour l'aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33325
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
22 octobre 2024
7 799
6 sept. 2009 à 13:42
6 sept. 2009 à 13:42
Aucune idée je ne fais pas de Pascal, mais j'imagine que c'est une un tableau de couple entiers dans {0,1}. Son équivalent en C++ serait un :
Exemple :
... ce qui donne à l'exécution :
Bonne chance
std::vector<std::pair<bool,bool> >
Exemple :
#include <vector> #include <iostream> typedef std::vector<std::pair<bool,bool> > my_array_t; // Ecrire une paire template <typename T1,typename T2> std::ostream & operator << (std::ostream & out,const std::pair<T1,T2> & p){ out << '(' << p.first << ',' << p.second << ')'; return out; } // Ecrire un vecteur template <typename T> std::ostream & operator << (std::ostream & out,const std::vector<T> & v){ typename std::vector<T>::const_iterator vit (v.begin()), vend(v.end()); out << '['; for(;vit!=vend;++vit) out << ' ' << *vit; out << " ]"; return out; } int main(){ my_array_t my_array; // Remplir le tableau my_array.push_back(std::make_pair(0,1)); my_array.push_back(std::make_pair(1,1)); my_array.push_back(std::make_pair(1,0)); my_array.push_back(std::make_pair(0,0)); my_array.push_back(std::make_pair(1,0)); // Et l'afficher std::cout << my_array << std::endl; // Afficher le 2e élement (ils sont indexés à partir de 0) std::cout << my_array[1] << std::endl; return 0; }
... ce qui donne à l'exécution :
[ (0,1) (1,1) (1,0) (0,0) (1,0) ] (1,1)
Bonne chance
7 juil. 2009 à 21:04
TStringList : je vais essayer avec ce qui vous avez dis
TMemoryStream : j'ai trouvé quelques chose comme ca ( TMemoryStream ^ ms = gcnew TMemoryStream; ) il parait qu'elle marche
TStringStream : j'ai trouvé stringstream object ?
THandleStream : pas de résultat
Avez vous une idée sur celles ci ?
Merci de ta compréhension