2017-07-29 7 views
0
PROCEDURE TForm1.Button1Click(Sender: TObject); 
VAR count:Integer; 
    text1:String; 
BEGIN 
    text1 := 'Line1'+#13#10+'® Line2'+#13#10+'Line3'; 

    FOR count := 1 TO Length(text1) DO 
    ShowMessage(Copy(text1,count,4)); 
END; 

donc ... les codes de caractères pour unicode le texte a environ 4 chiffres;
et depuis la disponibilité est assez pour ne pas s'en soucier comment cela fonctionne,
signifiant aller compliqué où les choses par as it is sont rendues plus simples;[?] Char Code - Comment: utiliser la commande de copie; Donc

alors de ne pas aller à propos de la documentation de toutes ces choses,
serait de savoir comment copier les codes de caractères uniquement pour la première identification d'une chaîne; en utilisant la commande de copie pour obtenir seulement le # qui n'est pas cité comme 'string';

chaîne 'Line1'; code #13#10;

alors voici la question ::
[?] comment utiliser commande Copier sur lequel lorsque ledit être exhaustif pris en charge pour unicode,
[?] que de l'exemple, il fonctionne parfaitement montrant le message avec le symbole comme ® obtenant ainsi son code de caractère?
sens tout en effectuant une copie ( text1,1,1 ) pour retourner le premier # de chaque code [?];


EDIT: ouais ... la fonction Longueur compte les caractères d'addition;


EDIT2: en utilisant '|'+copy(text1,1,1)+'|' arrive qu'il retourne un message complètement vide en rencontrant ® ce qui est ça?


cela est sur le point de créer une fonction pour éviter le retour RTL ? sur de certaines limites ASCII;
qui n'est pas pris en charge par d'autres fonctions comme Copier;

+0

J'ai lu votre question, et il ressemble à un texte anglais avec des mots anglais, mais je n'ai absolument aucune idée de ce que vous demandez. Vous pourriez vouloir lire l'aide intégrée, ou le [Delphi docwiki] (http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Copy) pour savoir ce que vous voulez savoir. –

+0

Que voulez-vous dire par "codes de caractères pour le texte unicode a environ 4 chiffres;" Voulez-vous dire "+ U1234" et similaire? –

+0

a étudié et navigué sur Internet à propos des logiques [?] points d'interrogation; ce qui signifie que le code n'a pas pu lire ce qui serait des caractères spéciaux; puis à partir des informations disponibles, avait été présenté à partir de l'échantillon de code et plus tard sur l'ajustement de la logique, que le symbole là-bas a le code de # 0174 (par exemple); ce qui signifie que la commande de copie de 1,1 ne fonctionne pas sur de tels caractères (la documentation a dit qu'elle était épuisée pour pouvoir travailler comme ça jusqu'à maintenant); puis de le lire par ces codes # 0174 au lieu du caractère rendu; – H3sDW11e

Répondre

0

Lazarus utilise le codage par défaut UTF-8 si la longueur de caractères en octets peut être variable (comme je sais de 1 octet pour les caractères ASCII sur 4 octets pour certains caractères spéciaux).

Exemple:

program project1; 

{$mode objfpc}{$H+} 

uses 
    LazUnicode, LazUTF8; 

var 
    //   123456789
    s: string = 'Παράδειγμα 123'; 
    c: string; 

begin 
    Writeln(Length(s));  // 24, length in bytes (10 2-bytes chars + 4 ASCII chars) 
    Writeln(UTF8Length(s)); // 14, length in chars (code poits) 

    // To enumerate characters in string, LazUnicode unit should be in "uses" clause 
    // "c" variable declared as "string" because it can hold more then one bytes 
    for c in s do 
     Writeln(c); 

    // Copy code point(s) (not byte(s)) 
    Writeln(UTF8Copy(s,1,1)); 
end. 

More reading: Unicode Support in Lazarus