Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1462 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [API Windows] Pourquoi cette foultitude dans les types ?

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[API Windows] Pourquoi cette foultitude dans les types ?

n°265307
Cherrytree
cn=?
Posté le 09-12-2002 à 13:34:36  profilanswer
 

CHAR, TCHAR, WCHAR, PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR, LPCCH, PCCH, LPCSTR, PCSTR...
 
Pourquoi ? Quel usage ? Vous faites comment vous ?


---------------
Le site de ma maman
mood
Publicité
Posté le 09-12-2002 à 13:34:36  profilanswer
 

n°265309
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 13:35:48  profilanswer
 

j'utilise les types demandés par les fonctions de l'API, genre si la fonction veut un CHAR je lui donne un CHAR [:dawa]
 
Mais je dois de toute façon convertir ça à partir de LongString/AnsiString/WideString :whistle:


Message édité par antp le 09-12-2002 à 13:36:16

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265311
Cherrytree
cn=?
Posté le 09-12-2002 à 13:37:01  profilanswer
 

Waouh, rapide monsieur P. :jap: Cela étant, pourquoi a t'on besoin d'une telle quantité de type ?


---------------
Le site de ma maman
n°265312
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 13:37:14  profilanswer
 

:pt1cable:


---------------
du bon usage de rand [C] / [C++]
n°265316
Cherrytree
cn=?
Posté le 09-12-2002 à 13:40:31  profilanswer
 

Tiens j'en ai oublié dans les char et autres :
PTCHAR, LPWSTR, LPTCH, PTCH, PTSTR, LPTSTR, LPCWSTR LPCTSTR, LPSTR, LPTCH, PTCH, PTSTR, LPTSTR, LPCSTR, LPCTSTR !
 
Si y a des doublons, j'en suis désolé.


---------------
Le site de ma maman
n°265318
Cherrytree
cn=?
Posté le 09-12-2002 à 13:40:58  profilanswer
 
n°265324
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 13:47:26  profilanswer
 

ben ca montre le niveau d'intelligence des dev de windows. et puis au moins, vu le nombre de trucs incohérent dans l'API, je ne vois qu'une explication. vu le nombre de bordels, la question de la maintenance du code ne se pose meme pas: on en rajoute une couche a chaque fois avec une nouvelle batterie de type. c'est sans fin. y a que microsoft pour réinventer les char  :lol:
 
et pis quand ils développaient de nouveux types de données, leur spec devait etre tellement beton, le comportement tellement bien défini maitrisé et compris  :pt1cable:), qu'il etait impossible d'apporter de modifications. ou alors les programmeurs etaient autistes et avaient chacun l'ambition de réinventer l'o chaude.
 
 
je ne vuaillon po d'otreu aisplikation


---------------
du bon usage de rand [C] / [C++]
n°265326
Cherrytree
cn=?
Posté le 09-12-2002 à 13:52:37  profilanswer
 

En fait l'un des problèmes de Windows, c'est que le soft n'est pas unique, mais se décline en plusieurs versions. D'après ce que Petzold explique dans son best seller, Windows 98 contrairement à NT ne supporte pas Unicode, d'où une première dualité sur les identificateurs. Ensuite, il y a parmi les identificateurs un certain nombre de macros pour adresser ce problème de dualité. Cependant cela ne me satisfait pas comme raisonnement. Même en divisant par trois le nombre des identificateurs, ça fait trop. D'où ma question.


---------------
Le site de ma maman
n°265331
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 13:57:11  profilanswer
 

ben le developpement a manqué de synchronisation et les developpeurs n'ont pas su factoriser leur code et voir ce qui pouvait servir ailleurs. alors chacun a fait sa petite sauce pour un problème donné sans penser à un truc générique :spamafote:


---------------
du bon usage de rand [C] / [C++]
n°265333
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 09-12-2002 à 13:58:50  profilanswer
 

pareil en C++, ya plein de types à la con dans tous les sens genre les CString....


---------------
du bon usage de rand [C] / [C++]
mood
Publicité
Posté le 09-12-2002 à 13:58:50  profilanswer
 

n°265335
Cherrytree
cn=?
Posté le 09-12-2002 à 14:02:48  profilanswer
 

Moralité [:tonton_benou] ! Mais là n'est pas le sujet. Si des gurus trainent dans le coin... Même ceux de developpez.com (OK, spadrole) !


---------------
Le site de ma maman
n°265336
darkoli
Le Petit Dinosaure Bleu
Posté le 09-12-2002 à 14:03:00  profilanswer
 

Taz@PPC a écrit :

pareil en C++, ya plein de types à la con dans tous les sens genre les CString....


spourça le C c'est mieux : C'est "char" tout le temps mais défois y'a une "*" ... :D


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
n°265337
drasche
Posté le 09-12-2002 à 14:03:07  profilanswer
 

j'ai un début d'explication car il m'arrive parfois d'utiliser ce type de notation.  Les préfixes donnent un renseignement sur le type de données manipulées (jusque là j'assume que vous le saviez déjà ;))
 
LP = Long Pointer
P = Pointer (short?)
C = Constant?
par contre le T je vois pas bien ce que ça veut dire.
 
WCHAR ce serait pas un caractère unicode?
NP je vois pas bien non plus mais à mon avis il y a une explication logique derrière tout ça.  Je ne pense pas, contrairement à l'avis général, que ce soit un brol quelconque fait sans concertation (du moins j'aime à le croire) ;)
 
Je vois pas, par contre, pas la différence entre PCHAR et PCH.

n°265340
lorill
Posté le 09-12-2002 à 14:05:11  profilanswer
 

drasche a écrit :

j'ai un début d'explication car il m'arrive parfois d'utiliser ce type de notation.  Les préfixes donnent un renseignement sur le type de données manipulées (jusque là j'assume que vous le saviez déjà ;))
 
LP = Long Pointer
P = Pointer (short?)
C = Constant?


ben perso je préfère lire "char *" que "LPCSTR"  [:sinclaire]

n°265341
Cherrytree
cn=?
Posté le 09-12-2002 à 14:06:11  profilanswer
 

Alors si j'ai bien suivi ce que j'ai appris de Petzold, WCHAR c'est le pendant de char ou CHAR pour Unicode, et TCHAR c'est une macro pour parler de char ou WCHAR selon que UNICODE est défini dans le programme (un #define donc).


---------------
Le site de ma maman
n°265342
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 14:06:27  profilanswer
 

DarkOli a écrit :


spourça le C c'est mieux : C'est "char" tout le temps mais défois y'a une "*" ... :D


 
heu tous les types cités par Cherrytree sont des types C vu que l'API Windows est à la base pour du C :whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265346
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 14:07:40  profilanswer
 

drasche a écrit :


NP je vois pas bien non plus mais à mon avis il y a une explication logique derrière tout ça.  


 
NP = null pointer, c'est pour quand tu veux mettre des bugs dans ton code. Logique que ce soit prévu au niveau de l'API Windows :whistle:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°265347
Cherrytree
cn=?
Posté le 09-12-2002 à 14:08:20  profilanswer
 

Sinon, pourquoi faire une distinction entre les suffixes CHAR, CH et STR. C'est certainement évident, mais je vois pas.


---------------
Le site de ma maman
n°265355
drasche
Posté le 09-12-2002 à 14:17:58  profilanswer
 

ben CHAR pour un simple char et STR pour toute une chaîne de caractères.  En C il y a une différence subtile en ce sens qu'on utilise les simple quotes (';) pour un simple char et les double quotes (" ) pour les chaînes de caractères. (mais ça n'a probablement rien à voir ;))

n°265363
El_gringo
Posté le 09-12-2002 à 14:24:26  profilanswer
 

lorill a écrit :


ben perso je préfère lire "char *" que "LPCSTR"  [:sinclaire]  


 
Sauf que LPCSTR ajoute la notion de chaine CONSTANTE pour le compilateur...

n°265366
Cherrytree
cn=?
Posté le 09-12-2002 à 14:26:44  profilanswer
 

El_Gringo a écrit :


 
Sauf que LPCSTR ajoute la notion de chaine CONSTANTE pour le compilateur...

On peut toujours recourir au spécificateur const, donc je suis pas sûr que ce soit bien vu d'avoir créé un nouvel identificateur.


---------------
Le site de ma maman
n°265378
El_gringo
Posté le 09-12-2002 à 14:32:57  profilanswer
 

Cherrytree a écrit :

On peut toujours recourir au spécificateur const, donc je suis pas sûr que ce soit bien vu d'avoir créé un nouvel identificateur.


 
Ben, c'est plus concis d'avoir un type pour ça.
Dans certaines normes de programmation C (je sais pas si ça fait partie des normes officielles), on dit que, pour chaque nouveau typedef, on doit définir un type pointeur sur ce type (préfixé par LP). Moi je trouve pas si mal l'histoire du LPC pour "const". Quand on à l'habitude, c plus rapide.

n°265380
drasche
Posté le 09-12-2002 à 14:34:25  profilanswer
 

Taz@PPC a écrit :

ben le developpement a manqué de synchronisation et les developpeurs n'ont pas su factoriser leur code et voir ce qui pouvait servir ailleurs. alors chacun a fait sa petite sauce pour un problème donné sans penser à un truc générique :spamafote:


au contraire je pense plutôt qu'il s'agissait de définir des standards au niveau typage.  Evidemment ça ne sert à rien au niveau d'un simple EXE mais dès lors qu'on s'attaque aux DLLs, il y a grandement intérêt à ne pas se mélanger les pinceaux au niveau des types pointeurs, et je pense que c'est précisément ce qu'ils ont voulu éviter.  Faut pas oublier que la moyenne d'âge des développeurs chez MS est extrêmement basse (moi même je crois que je suis bon pour la retraite :D) et donc, programmeurs peu expérimentés...

n°265400
Willyzekid
Posté le 09-12-2002 à 14:44:39  profilanswer
 

CHAR = 8 bits
WCHAR = 16 bits
PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR = Pointeur sur des chars (ou des strings) de 8 bits avec les distinctions entre les deux tailles de pointeurs qui coexistent sous les windows 16 bits.
LPCCH, PCCH, LPCSTR, PCSTR = même chose pour des constantes.
PWCHAR, LPWCH, PWCH, NWPSTR, LPWSTR, PWSTR = Pointeur sur des chars (ou des strings) de 16 bits .
WCHAR, LPCWCH, PCWCH, LPCWSTR, PCWSTR = même chose pour des constantes.
 
TCHAR (et ses déclinaisons) est le mode générique...Si UNICODE est définit, il équivaut à WCHAR.
 
etc.
 
Autrement dis, tout a une raison ( ou...presque :) ) La raison principale étant d'avoir des types dont le codage est fixe (sur 8 bits, sur 16, etc.)


Message édité par Willyzekid le 09-12-2002 à 14:50:00

---------------
Horizon pas Net, reste à la buvette!!
n°265407
Willyzekid
Posté le 09-12-2002 à 14:47:16  profilanswer
 

drasche a écrit :


Faut pas oublier que la moyenne d'âge des développeurs chez MS est extrêmement basse (moi même je crois que je suis bon pour la retraite :D) et donc, programmeurs peu expérimentés...


 
Les programmeurs de MS sont tous un peu des têtes qui sortent de la plupart des grosses universités...et ces mecs là n'y rentrent même pas en temps que programmeurs mais en tant que QA après avoir passé 7 entretiens!
La moyenne d'âge est basse chez les programmeurs de base mais pas l'intelligence ;)


Message édité par Willyzekid le 09-12-2002 à 14:48:28

---------------
Horizon pas Net, reste à la buvette!!
n°265408
kadreg
profil: Utilisateur
Posté le 09-12-2002 à 14:48:35  profilanswer
 


 
Je me la garde pour vendredi celle-là


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°265411
lorill
Posté le 09-12-2002 à 14:51:39  profilanswer
 

sachant que ms, comme les autres, recrute des ingenieurs tout juste diplomés, qui n'ont jamais eu le moindre cours d'informatique, y'a de quoi...

n°265416
Willyzekid
Posté le 09-12-2002 à 14:55:37  profilanswer
 

lorill a écrit :

sachant que ms, comme les autres, recrute des ingenieurs tout juste diplomés, qui n'ont jamais eu le moindre cours d'informatique, y'a de quoi...


 
décidement la rumeur est tenace :)


Message édité par Willyzekid le 09-12-2002 à 14:56:04

---------------
Horizon pas Net, reste à la buvette!!
n°265422
kadreg
profil: Utilisateur
Posté le 09-12-2002 à 14:57:08  profilanswer
 

Willyzekid a écrit :


décidement la rumeur est tenace :)


 
Spa une rumeur ...


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°265424
lorill
Posté le 09-12-2002 à 14:57:43  profilanswer
 

Willyzekid a écrit :


décidement la rumeur est tenace :)


tu veux que je te montre les papiers qu'a reçu ma soeur ?
Ms, ingésoft, et d'autres...

n°265426
Willyzekid
Posté le 09-12-2002 à 14:59:06  profilanswer
 

lorill a écrit :


tu veux que je te montre les papiers qu'a reçu ma soeur ?
Ms, ingésoft, et d'autres...


 
huh? oui montre je suis curieux !


---------------
Horizon pas Net, reste à la buvette!!
n°265429
lorill
Posté le 09-12-2002 à 15:00:28  profilanswer
 

Willyzekid a écrit :


huh? oui montre je suis curieux !


faudra au moins attendre ce week end, et voir si elle l'a pas basardé. je vais essayer d'y penser, sinon MP moi samedi pour me le rappeler

n°265431
drasche
Posté le 09-12-2002 à 15:01:05  profilanswer
 

ya eu une émission (envoyé spécial si g bonne mémoire) qui parlait beaucoup de la vie après MS.  La réponse est sûrement là-dedans?  Ingé info ou ingé tout court?  Chez nous on prend de tout. Ingés infos, ingés en chimie, commercial, des mines, etc...  Pourquoi MS ferait-il différemment?

n°265437
lorill
Posté le 09-12-2002 à 15:03:18  profilanswer
 

drasche a écrit :

ya eu une émission (envoyé spécial si g bonne mémoire) qui parlait beaucoup de la vie après MS.  


 :non: c'était sur arte, et ca parlait que de ceux devenus millionaires et plus motivés du tout

n°265438
kadreg
profil: Utilisateur
Posté le 09-12-2002 à 15:03:24  profilanswer
 

drasche a écrit :

ya eu une émission (envoyé spécial si g bonne mémoire) qui parlait beaucoup de la vie après MS.  


 
Je l'ai vu. Ca faisait très "pauvre petite fille riche" quand même.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°265443
Willyzekid
Posté le 09-12-2002 à 15:05:36  profilanswer
 

drasche a écrit :

Chez nous on prend de tout. Ingés infos, ingés en chimie, commercial, des mines, etc...  Pourquoi MS ferait-il différemment?


 
Parce que MS quand ils font leur recrutement ont l'embarras du choix... :)


---------------
Horizon pas Net, reste à la buvette!!
n°265463
Cherrytree
cn=?
Posté le 09-12-2002 à 15:10:51  profilanswer
 

Willyzekid a écrit :

CHAR = 8 bits
WCHAR = 16 bits
PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR = Pointeur sur des chars (ou des strings) de 8 bits avec les distinctions entre les deux tailles de pointeurs qui coexistent sous les windows 16 bits.
LPCCH, PCCH, LPCSTR, PCSTR = même chose pour des constantes.
PWCHAR, LPWCH, PWCH, NWPSTR, LPWSTR, PWSTR = Pointeur sur des chars (ou des strings) de 16 bits .
WCHAR, LPCWCH, PCWCH, LPCWSTR, PCWSTR = même chose pour des constantes.
 
TCHAR (et ses déclinaisons) est le mode générique...Si UNICODE est définit, il équivaut à WCHAR.
 
etc.
 
Autrement dis, tout a une raison ( ou...presque :) ) La raison principale étant d'avoir des types dont le codage est fixe (sur 8 bits, sur 16, etc.)

OK, ça tient debout.
 
Maintenant, dans une famille comme par exemple : PCHAR, LPCH, PCH, NPSTR, LPSTR, PSTR pourquoi autant d'identifiants ? ça en fait 6 pour pointer des chars. Alors tu dis que c'est pour faire la distinction entre deux tailles de pointeurs. Moi je réponds qu'il y en a peut-être 4 de trop alors. Non ?


---------------
Le site de ma maman
n°265507
drasche
Posté le 09-12-2002 à 15:46:19  profilanswer
 

Moi je vois pas la différence entre CH et CHAR.  Par contre clairement, on peut pointer sur un CHAR ou un STRing, la différence peut être pertinente.

n°265606
Cherrytree
cn=?
Posté le 09-12-2002 à 17:01:04  profilanswer
 

drasche a écrit :

Moi je vois pas la différence entre CH et CHAR.  Par contre clairement, on peut pointer sur un CHAR ou un STRing, la différence peut être pertinente.

J'uppe à tous hasards. Cette question est intéressante.
 
De plus vos habitudes de programmation (faites-vous comme antp ? avez-vous une autre manière de faire ?) m'intéressent. Donc up.


---------------
Le site de ma maman
n°265614
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-12-2002 à 17:02:36  profilanswer
 

bhen s'ils font comme moi c'est qu'ils utilisent Delphi, ou à la limite C++Builder :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [API Windows] Pourquoi cette foultitude dans les types ?

 

Sujets relatifs
[delphi] débutant : Déclarer une APIPerl sous Windows
Existe t-il une version de PostGreSQL pour Windows ???Quel environment pour utiliser GCC sous Windows?
[C++/API] "Ex" ou pas ?cross-compilation linux -> windows
[PHP] Cohabitation linux & windows pour les mailsProbleme de mp3 avec une API vb
Logiciel pour faire du rechercher/remplacer sous Windows[C++/API] AVIFileInfo : problème !!!
Plus de sujets relatifs à : [API Windows] Pourquoi cette foultitude dans les types ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR