dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 février 201914 25 janv. 2012 à 07:36
Salut
Tu peux déjà remplacer ces 2 functions par une seule
function PPI(var i: integer): integer; inline; // ++I
function PPI(var i: integer; const n: integer): integer; inline; overload;// ++I
:
function PPI(var i: integer; n:integer=1): integer;
on peut alors écrire :
a := 5;
b := ppi(a); ou b := ppi(a,3);
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 26 janv. 2012 à 17:06
tout ecrire sur 1 ligne c'est moche
Entièrement d'accord, mais ce n'est pas moi qui cherche à réduire le nombre de lignes ici...
Dernièrement, j'ai testé la réduction à l’extrême de 1200 lignes de code indenté et commenté en une petite centaine de lignes de code, histoire de voir si cela changeait quelque chose pour le compilateur (gain en temps de compilation par exemple). Résultat: un code devenu illisible et donc non maintenable pour une amélioration tellement minime qu'au final on n'y trouve aucun intérêt. Bref, une expérience instructive mais à ne surtout pas renouveler.
sur linux xD delphi c'est un peu à la traine
Delphi était avant tout un programme développé pour l'environnement Windows, avec une version pour environnement Linux dénommée Kylix.
Certes Kylix n'est plus d'actualité, mais il ne faudrait surtout pas oublier qu'on peut aisément le remplacer par FreePascal/Lazarus fonctionnel sous les 2 environnements.
Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
FFCAST
Messages postés36Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention 2 novembre 2015 25 janv. 2012 à 00:26
Depuis peu, je programme en C et C++ et utiliser i++ et ++i diminue le nombre de lignes donc je m'y suis habitué.
Si on veux par exemple, désolé pour l'exemple, je n'avais pas d'idée, celà va afficher de 0 à 10 puis de 9 à 1 dans le memo.
function toto(i: integer): integer;
begin
// exemple
if i = 10 then
begin
Result := 0;
exit;
end;
form1.memo1.Lines.add(inttostr(i));
toto(ppi(i));
form1.memo1.lines.add(inttostr(i));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
toto (0);
end;
On peut s'apercevoir que je peux incrémenter directement dans ma fonction. Celà évite de faire 2 lignes supplémentaires. J'aimerais bien ensuite mettre cette fonction avec les templates pour que tous les types de variables soit gérés.
Vous n’avez pas trouvé la réponse que vous recherchez ?
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 26 janv. 2012 à 11:16
Bonjour
Oui, il y a d'autres améliorations... Supprimer l'appel de ces fonctions !
Le pascal ce n'est pas du C++; à chaque langage a ses caractéristiques auxquelles il faut s'adapter.
Quand à ton exemple, si on laisse de côté la gestion récursive de la fonction (une simple boucle itérative aurait été suffisante), en remplaçant :
toto(ppi(i));
par
inc(i); toto(i);
ou encore plus simplement par
toto(i+1);
tu n'augmenteras pas le nombre de lignes, juste le nombre d'instructions.
N.B. L'appel de "Inc" ou "Dec" sera toujours plus compréhensible par tous les développeurs pascal qui regarderont ton code, que l'appel à une fonction ppi, qui me parait être plus qu'obsolète.
Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
FFCAST
Messages postés36Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention 2 novembre 2015 26 janv. 2012 à 11:57
ok hummm mai j'ai des petit soussi exemple
while i < 10 do
Form1.Memo1.Lines.add(inttostr(i + 1));
//2 ligne mai boucle infini :-(
while i < 10 do
Form1.Memo1.Lines.add(inttostr(i));inc(i);
//2ligne mai marche pas car il manque begin et end logic ^^
while i < 10 do
begin
Form1.Memo1.Lines.add(inttostr(i));
inc(i);
end;
//marche mai 5 ligne :-s
while i < 10 do
Form1.Memo1.Lines.add((inttostr(IPP(i))));
//marche 2 ligne :-)
surtout que appres je voudrai maitre sa comme les templates en c++
pas encore trouver donc actuelement
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 26 janv. 2012 à 16:06
Bonjour
Tout en une seule ligne, avec l'initialisation de la variable en prime :
i := 0 ; while i < 10 do begin Form1.Memo1.Lines.add(inttostr(i + 1)); inc(i); end ;
Pourquoi vouloir refaire du C++ ???
Soit tu programmes en Delphi et tu oublies le C++ pour te concentrer sur le Pascal Objet du Delphi, soit le C++ convient mieux a tes besoins et dans ce cas tu oublies le Delphi
Les #define de macro n'ont pas d'équivalent en Delphi. Une macro est remplacée par une procédure ou une fonction. Par exemple la macro IsAcii devient
function isAscii(c:char) : boolean ;
begin
Result := c in ['A'..'Z','a'..'z'] ;
end;
Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
FFCAST
Messages postés36Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention 2 novembre 2015 26 janv. 2012 à 16:14
certe je prefaire delphi au C++ sa fait 10 ans cette année que j'ai commencer la prog avec delphi (faut souflé les bougie^^)
mai le C++ à quelque petit avantage plutot pratique je reste sur delphi mai j'aurais bien aimé avoir les pti truc en plus du C++ sur delphi
tout ecrire sur 1 ligne c'est moche xD meme si sa marche xD je fait du C et C++ c'est juste par ce que on apprend cela en cour et que sur linux xD delphi c'est un peu à la traine ^^
FFCAST
Messages postés36Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention 2 novembre 2015 26 janv. 2012 à 17:14
^^ quand je dit diminuer le nombre de ligne c'est pour evité comme lexemple au lieu de 2 ligne devoir ecrire 5 ligne chose qui marrive souven juste pour une histoire de incrementé et pour linux oui je connaissé l'histoir et sa marrive de utiliser Lazarus je suis pas tres fan^^ en tout qu'a merci pour t'est conseille ^^