Copier collé de lignes de code

Bonjour a tous
j ai chargé le nouvel éditeur arduino 2.0.
si je colle une copie de code copiée depuis un encadrement de page web vers l éditeur Arduino 2.0, il apparaît des petits carrés représentant des caractères non imprimables dans le sketch, qu il faut supprimer un a un, sous peine d erreur de compilation
je me doute qu il y a une autre façon de procéder mais je n ai pas trouvé.
merci de votre réponse
bien cordialement
roland

He's saying he installed version 2.0, but he's having the problem that if he copies and pastes something off a web site into the editor, there are non-printing characters which show up as little squares, and he has to remove them one by one. He thinks there must be an easier way, but he hasn't managed to find it.

1 Like

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ j’ai déplacé votre post vers le forum francophone.

Merci de prendre en compte les recommandations listées dans “Les bonnes pratiques du Forum Francophone”

Bonjour rolandbreche

As-tu un lien sur un programme qui pose ce genre de problème?

Cordialement
jpbbricole

D'accord. Merci pour l info

bonjour jpbbricole,
il ne s agit pas d un programme particulier.
par exemple sur cette copie d écran on peut voir du code qu on peut copier-coller mais on embarque en même temps des caractères non affichables.

la page web d origine :

et le résultat dans l éditeur de la copie du code.


et le résultat dans l éditeur
merci de ton aide
cordialement.

si vous faites bien attention à ne sélectionner que le texte du bloc et ne pas prendre des éléments HTML en plus sur la page, ça fonctionne sans souci pour moi (sur Mac au moins)

voici le code copié-collé

#include "WiFi.h"
#include "ESPAsyncWebServer.h"
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
 
// Replace with your network credentials
const char* ssid = "BYNARK";
const char* password = "bynark@123";
 
Adafruit_SHT31 sht31 = Adafruit_SHT31();
 
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
 
  String readSHT31Temperature(){
  
  float t = sht31.readTemperature();
 
  if (! sht31.begin(0x44))        // Set to 0x45 for alternate i2c addr
{ 
Serial.println("SHT31 test");
while (1) delay(1);
}
 
  if (isnan(t)) {    
    Serial.println("Failed to read temperature!");
    return "--";
  }
  else {
    Serial.print("");
    Serial.print("Temperature: ");
    Serial.println(t);
    return String(t);
  }
}
 
String readSHT31Humidity() {
 
  float h = sht31.readHumidity();
  if (isnan(h)) {
    Serial.println("Failed to read Humidity!");
    return "--";
  }
  else {
    Serial.print("Humidity: ");
    Serial.println(h);
    Serial.println("");
    return String(h);
  }
}
 
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
  <style>
    html {
     font-family: Arial;
     display: inline-block;
     margin: 0px auto;
     text-align: center;
    }
    h2 { font-size: 3.0rem; }
    p { font-size: 3.0rem; }
    .units { font-size: 1.2rem; }
    .sht31-labels{
      font-size: 1.5rem;
      vertical-align:middle;
      padding-bottom: 15px;
    }
  </style>
</head>
<body>
  <h2>ESP32 SHT31 Web Server</h2>
  <p>
    <i class="fas fa-thermometer-half" style="color:#059e8a;"></i> 
    <span class="sht31-labels">Temperature</span> 
    <span id="temperature">%TEMPERATURE%</span>
    <sup class="units">&deg;C</sup>
  </p>
  <p>
    <i class="fas fa-tint" style="color:#00add6;"></i> 
    <span class="sht31-labels">Humidity</span>
    <span id="humidity">%HUMIDITY%</span>
    <sup class="units">%</sup>
  </p>
</body>
<script>
setInterval(function ( ) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("temperature").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "/temperature", true);
  xhttp.send();
}, 10000 ) ;
 
setInterval(function ( ) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("humidity").innerHTML = this.responseText;
    }
  };
  xhttp.open("GET", "/humidity", true);
  xhttp.send();
}, 10000 ) ;
</script>
</html>)rawliteral";
 
// Replaces placeholder with sht31 values
String processor(const String& var){
  //Serial.println(var);
  if(var == "TEMPERATURE"){
    return readSHT31Temperature();
  }
  else if(var == "HUMIDITY"){
    return readSHT31Humidity();
  }
  return String();
}
 
void setup(){
  // Serial port for debugging purposes
  Serial.begin(115200);
  
  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
 
  // Print ESP32 Local IP Address
  Serial.println(WiFi.localIP());
 
  // Route for root / web page
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html, processor);
  });
  server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", readSHT31Temperature().c_str());
  });
  server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/plain", readSHT31Humidity().c_str());
  });
 
  // Start server
  server.begin();
}
 
void loop(){
  
}

c'est surtout un problème de la page d'origine qui ne propose pas, comme le font souvent les sites web bien pensés pour le code, d'offrir la possibilité de télécharger la version "brute" du code.

Bonjour

Itou sous Windows 11 :grinning:

Cordialement
jpbbricole

Tout va bien sous Linux.

Il n'est pas impossible que le problème soit situé entre la chaise et le clavier.
Blague à part, bien s'assurer que la sélection commence à l'intérieur du cadre sur le #include et s'arrête sur le dernier caractère du code

merci a tous pour vos réponses, en particulier fdufnews bien sur
hélas comme je le précisais, le collage ne fonctionne pas dans l éditeur de la version 2.03 alors qu il fonctionne dans l éditeur 1.8 . je viens encore d essayer avec le même copier, donc sans erreur possible de manip. du moins chez moi le problème reste entier.
avez bien essayé dans l éditeur arduino 2.03 ?

windows 11 aussi.

Mon test a été fait avec la version 2.03 sur un Mac

Aussi pour qualifier votre message, prenez ce bout de code

void setup() {}
void loop() {}

En cliquant sur le petit bouton de copie du code en haut à droite du bloc quand votre souris est sur le bloc de code et collez le dans l’IDE

c est fait . sans aucun problème dans les deux IDEs

le souci est donc plus dans la façon dont vous copiez le code sur votre page en question

il faut vraiment faire très attention à rester dans la frame.

Les carrés rouge dans la copie d'écran que tu donnes au début correspondent à des espaces dans le code source.

Quels messages d'erreur obtiens-tu lors de la compilation?
Pourrais-tu mettre en pièce jointe le fichier qui génère ces erreurs. Pour que l'on voit s'il y a des caractères étranges dans le code copié.

merci . oui bien sur . avant d ouvrir le sujet j y ai veillé.

sketch_probleme_copy_20221212131305.ino (4,2 Ko)
erreurs.cpp (49,9 Ko)
le symbole est U+00a0

le symbole représenté par le carre rouge

jml
bonjour,
mais dans votre exemple, il y a le petit icone dans le coin droit permettant de charger le code et qui n existe pas dans ma page web.

oui, c'est ce que je dis, c'est une page web "pourrie", pas un souci de l'IDE... (mais en faisant attention, au moins sur Mac, il n'y a aucun souci pour la copie dans l'IDE 2.03 ou 1.8.x)