Bonjour,
Voici la partie de code qui m'intéresse... il est à noter que je ne sais pas installer Windows Terminal et que je me réfère à Power Shell et CMD pour déterminer si oui ou non cette application fonctionne.
A la base cette application est développée sous Linux, elle fonctionne -- du moins j'obtiens ce que je désire: je tape quelques lettres et l'application "popule" une liste d'éléments que je parcoure en appuyant sur certaines touches jusqu'à appuyer sur "return".
Je crosscompile et j'obtiens les erreurs suivantes:
comme l'exécutable est présent je m'en fous et je le copie sur la partition lisible pour windows.0110:err:module:import_dll Library bcryptprimitives.dll (which is needed by L"Z:\\target\\x86_64-pc-windows-gnu\\debug\\uep_NXTMTGASeeker.exe") not found
0110:err:module:LdrInitializeThunk Importing dlls for L"Z:\\target\\x86_64-pc-windows-gnu\\debug\\uep_NXTMTGASeeker.exe" failed, status c0000135
Je switch sur windows et là -- catastrophe -- j'obtiens rien de ce que j'obtiens sous Linux...
J'ai parcouru sur github la partie "issues" relative à crossterm, et je ne vois pas de description similaire du dysfonctionnement.
Sur CMD, je vois pas trop pourquoi ça déconne, je vais revoir mon code au cas où j'aurais oublié de changer le séparateur en fonction que l'on soit sous Linux ou Windows, mais il me semble que j'avais "prévu le coup"...
Sur powershell, bon il est normalement utf8 compliant et j'ai passé à '1' le paramètre qui est censé permettre à powershell de prendre les séquences ANSI en compte (virtual terminal level), apparemment c'est foireux...
Voici ce que nous devrions obtenir:
https://paste.opensuse.org/pastes/f86aebd94cab
SOURCE:
Code Rust : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120 pub fn Prompt(Liste:LinkedList<String>) -> String { let mut Command :String = String::new(); enable_raw_mode(); // Set up terminal let mut stdout = io::stdout(); print!("{}","MTGASeeker> ".bright_blue()); stdout.flush().unwrap(); 'principale: loop { if let Ok(Event::Key(KeyEvent { code, .. })) = event::read() { match code { KeyCode::Char(celuici) => { Command.push(celuici); print!("{}",celuici); stdout.flush().unwrap(); let SubList = ConstructSubList(Command.clone(),Liste.clone()); for propositions in SubList { print!("{}",propositions.clone().italic().bold()); stdout.flush().unwrap(); if let Ok(Event::Key(matouche)) = event::read() { match matouche.code { KeyCode::Enter => { for backspace in propositions.clone().chars() { print!("\x08 \x08"); stdout.flush().unwrap(); } for backspace in Command.chars() { print!("\x08 \x08"); stdout.flush().unwrap(); } Command = propositions; break 'principale; } KeyCode::Down => { for backspace in propositions.chars() { print!("\x08 \x08"); stdout.flush().unwrap(); } stdout.flush().unwrap(); continue; } KeyCode::Char(celuici) => { for backspace in propositions.chars() { print!("\x08 \x08"); stdout.flush().unwrap(); } Command.push(celuici); print!("{celuici}"); stdout.flush().unwrap(); continue 'principale; } KeyCode::Backspace => { for backspace in propositions.chars() { print!("\x08 \x08"); stdout.flush().unwrap(); } if Command.pop().is_some() { print!("\x08 \x08"); stdout.flush().unwrap(); } } _ => { for backspace in propositions.chars() { print!("\x08 \x08"); stdout.flush().unwrap(); } stdout.flush().unwrap(); continue; } } // end match } } // end for } KeyCode::Backspace => { if Command.pop().is_some() { print!("\x08 \x08"); stdout.flush().unwrap(); } } KeyCode::Enter => { break; } KeyCode::Esc => { break; } _ => {} } // end match } } // end loop disable_raw_mode().unwrap(); stdout.flush().unwrap(); Command }
Pour le "invalid path"... j'obtiens la même chose sous Linux quand j'exécute le programme sur la partition windows, pourtant il me semble que dans mon fstab j'ai bien dit que cette partition devait être montée en utf8... faudra que je revérifie...
[EDIT]
Pour le "invalid path"... j'obtiens la même chose sous Linux quand j'exécute le programme sur la partition windows, pourtant il me semble que dans mon fstab j'ai bien dit que cette partition devait être montée en utf8... faudra que je revérifie...
Ca n'a rien à voir, dans une autre fonction j'utilisais un rfind() qui ne donnait rien... (None), je repars sur Windows pour voir comment se comporte cmd.exe avec l'application utilisant crossterm...
Partager