Hello!

Inspiré(e) de prendre part à la discussion ? Ou de poser une question ou demander de l’aide ?

Alors bienvenues dans les grands sujets des forums de La Bulle : m’inscrire.

Cette partie du forum n’est pas compatible avec les bloqueurs publicitaires

Félicitations à vous, de préférer les accès payants plutôt que la gratuité par la publicité, c’est honnorable et cohérent de votre part. Malheureusement, l’accès payant par micropaiement (qui serait d’environ 1 cent pour 20 pages consultées) n’est pour l’instant pas encore mis en place, et l’accès gratuit sans publicité, est réservé aux membres actif(ve)s du forum. En attendant, si vous souhaitez poursuivre votre visite chez nous, vous pouvez ajouter le site à votre liste blanche, ou encore mieux, désactiver le bloqueur partout. Pour ajouter le site à votre liste blanche, pour Firefox (similaire pour les autres navigateurs), rendez‑vous en bas à gauche de la fenêtre de votre navigateur, et cliquez sur le menu comme dans l’exemple de l’image ci‑dessous, puis rechargez la page, en appuyant sur F5.

fel-right backspace enter delete begin end dans un fichier.
que pensez vous du titre ?

Le sondage s’est terminé le Sam 31 Déc 2016 21:18

peut-être 0% 0% 0
incertain 0% 0% 0
oui 0% 0% 0
faux 0% 0% 0
Nombre total de votes : 0
fel-right backspace enter delete begin end dans un fichier.
Auteur Message
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Déc 2016 21:12
Message fel-right backspace enter delete begin end dans un fichier.
Bonjour,
J'aime travailler avec Ada onc je poste dans la section dédiée à mon plus grand bonheur.

Je viens chercher des idée pour effectuer 7 taches excluent les unes des autres,

c'est 7 taches sont liées à la lecture et la modification de fichier.
Voici la liste reduite à leur ensemble d'appartenance dans l'abstraction que j'ai du modèle.

Fonction "aller à la fin de la ligne courante ".
Fonction "aller au début de la ligne courante"
fonction "suppresion du caractère suivant".
fonction "aller au caractère suivant".
fonction "aller au caractère précédent".
fonction "inserer ou substituer une nouvelle ligne".
fonction "supprimer le caractère précédent.

j'ai réfléchis un peu et j'ai trouver deux choses.

La première est le duel "être en fin de ligne" et "être en début de ligne.
La deuxieme est le duel "être en début de ficher et être en fin de fichier.

Après j'ai eu une idée. c'est que maintenir l'état des position précédente et position suivante de la position courante.


Voilà, vous avez mon début de solution. je me déplace déjé de ligne en ligne de page en page. j'insert une nouvelle ligne avant le début de la ligne courante, j'insers ou substitu un caractère à la position courante.

Mais je sais le faire je vais le faire même mais entre temps si vous avez une bonne idée, je suis preneur.

Les sources son dispo à sourceforge ou à http://88.189.147.62/gnaies.html, le programme s'appel gnaies.


Pour vous donner une idée de mon implémentation, voici le code de l'affichage d'un page.

Source Ada : 

declare
Count : Natural := 0;
Term_Width : Natural := Edit_Buffer.C-2;
begin
if Edit_Buffer.File_Result /= null and then Edit_Buffer.File_Result.File_Content /= null then

Print_Loop:
for I in File_Index+1..Positive'min(File_Index+((Result_Max_Lines-2)),
Edit_Buffer.File_Result.File_Content'Length) loop
declare
tmp : constant Wide_String :=
(-Edit_Buffer.File_Result.File_Content(I));
Line : constant Wide_String := Tmp(Tmp'First..Wide_Fixed.Index_Non_Blank((Tmp), Backward));

Chars_Max : constant Positive := Term_Width;
Lines_Max : constant Positive := (Result_Max_Lines-2);
begin

if Real_Length(Line) > 0 and Real_Length(Line) < (Chars_Max * Lines_Max) then
for Line_Window in Line_Index..Integer'min(Real_Length(Line)/Chars_Max, Lines_Max) loop

declare
B_Inf : constant Positive := Line_Window * Chars_Max + 1;
B_Sup : constant Positive := Integer'min((Line_Window + 1)*Chars_Max, Real_Length(Line));
begin

if Real_length(Line) < Chars_max then
Draw(Edit_Buffer.Edit_Window.all, Count+1, 1, White, Line);

else
Draw(Edit_Buffer.Edit_Window.all, Count+1, 1, White, Line(B_Inf..B_Sup));

end if;
end;
Count := Count + 1;
exit Print_Loop When Count > (Result_Max_Lines - 3);
end loop;
else
Count := Count + 1;
end if;
end;


exit Print_Loop when Count > (Result_Max_Lines - 3);

end loop Print_Loop;

end if;

end;





Evidemment j'utilise ANSI_Console. Merci, et bravo pour l'implémentation de cette bibliothèque.

Merci pour votre contribution.

Je retourne au taf quand même.


Et plutôt que de revenir, j'ai un problème pour le calcule des tabulation mais j'ai des idées, mais c'est lourd.
Dans cette affichage j'ai un problème pour les tabulations.

Dernière édition par Emmanuel Sens le Ven 30 Déc 2016 21:36, édité 1 fois.

Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Déc 2016 21:33
Message Re: fel-right backspace enter delete begin end dans un fichier.
Y a un bug à l'affichage du code Ada à cause des cissions.
Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Déc 2016 21:36
Message Re: fel-right backspace enter delete begin end dans un fichier.
Désolé.
Profil
Beau Parleur
Beau Parleur
Avatar de l’utilisateur
  • Genre : Télétubbie
  • Messages : 320
Ven 30 Déc 2016 23:47
Message Re: fel-right backspace enter delete begin end dans un fichier.
Je reviens parce que c'est réglé pour mon problème d'optimisation.

J'ai trouvé que selon le mode insertion ou overwrite et selon qu'on backspace, ou delete ou enter on fait 5 chose différente dont 3 sont combiné à une 4ieme et une 5ieme distincte.

d'abord on beep si on tente entrer enter ou delete en mode roverwrite.

ensuite en insertion on concatenne et on bouge avec backspace si non on remplace par une espace et on bouge ; avec Enter c'est une sission et on bouge si non on beep; et avec delete on concatenne si non on beep.

C'étais pour faire le point. Merci de votre patience et gentillesse.

Bonsoir.
Profil
cron