2016-09-24 2 views
-1

L'utilisateur entre des valeurs de chaîne dans un tableau de chaînes via un InputBox, une fois les valeurs stockées, comment faire toutes les lettres en majuscules, comme dans l'exemple ci-dessous. Ces valeurs doivent ensuite écraser les valeurs non capitalisées du tableau afin qu'elles puissent être affichées plus tard dans une zone de liste. Je sais que j'ai besoin d'utiliser la fonction UpperCase mais je n'arrive pas à la faire fonctionner correctement car elle apparaît de nouveau non-capitalisée.Comment faire des valeurs de tableau toutes majuscules lazarus

C'est la première fois que j'expérimente les tableaux et la fonction UpperCase, alors soyez gentils.

Exemple: 'Hockey', 'Tennis', 'Football' à 'Hockey', 'TENNIS', 'FOOTBALL'

code UpperCase:

procedure TFrm2016Assignment9.BtnCapitalStrClick(Sender: TObject); 
    var 
     Capitalise : string; 
begin 
Capitalise := UpperCase(nBasicsStrArray[0]); 
end; 

Code Affichage:

procedure TFrm2016Assignment9.BtnDisplayStrClick(Sender: TObject); 
begin 
    dDateTime := Date() + Time(); 
    LstOutput.Items.Add('String Array : ' + DateTimeToStr(dDateTime)); 
    LstOutput.Items.Add(nBasicsStrArray[0]); 
    LstOutput.Items.Add(nBasicsStrArray[1]); 
    LstOutput.Items.Add(nBasicsStrArray[2]); 
    LstOutput.Items.Add(nBasicsStrArray[3]); 
    LstOutput.Items.Add(nBasicsStrArray[4]); 
    LstOutput.Items.Add('****'); 
end; 

Répondre

-1

Quel type de données est nBasicsStrArray?

utiliser juste UpperCase sur toute la chaîne:

whatever := UpperCase(someEdit.text); 
+0

Le type de données du tableau est également String. – HarryJoe

1

UpperCase est une fonction qui renvoie une nouvelle valeur avec des lettres en majuscules. Cela ne modifie pas son argument. Vous avez assigné cette nouvelle valeur à une variable locale et l'avez immédiatement oubliée. Supprimez la méthode BtnCapitalStrClick qui ne sert à rien. Lorsque vous ajoutez les chaînes les convertir en majuscules:

LstOutput.Items.Add(UpperCase(nBasicsStrArray[0])); 
+0

J'ai décidé de suivre cette approche, mais selon mon devoir, je dois garder la méthode BtnCapitalStrClick, donc ce que j'ai fait c'est que cette méthode a non seulement capitalisé les éléments du tableau, mais aussi les afficher en même temps. Donc LstOutput.Items.Add (UpperCase (nBasicsStrArray [iCount])); - dans une boucle for – HarryJoe

+0

Cela fonctionnera ... –

0

Depuis c'est un sujet Lazare il convient de noter que la solution n'est correcte UpperCase pour les 128 premiers caractères ASCII. Lazarus utilise le codage UTF8 par défaut, et donc la fonction UTF8Uppercase (dans l'unité LazUTF8) est une solution plus générale car elle prend en compte tous les caractères.

+0

Cela devrait vraiment être un commentaire car il ne répond pas à la question. –

+0

Je crois qu'ils ont rendu cela plus générique maintenant. En général, utilisez les fonctions normalement et, certainement, testez le code avec des caractères étrangers. – juus

+0

Non, juste vérifié avec Laz-trunk et fpc-trunk (un peu désuet, cependant): UTF8Uppercase toujours nécessaire. –