我試圖做到這一點,所以一旦輸入不同的文本形狀將改變顏色,但它說('A''Z')是'期望'的問題,但收到一個字符串文字''一個'' '。我不知道如何解決它。任何幫助表示感謝,謝謝!子範圍聲明的問題
type
TCapitalLetter = ('A' .. 'Z'); //subrange of type char
TDigit = ('0' .. '9'); //subrage of type char
我試圖做到這一點,所以一旦輸入不同的文本形狀將改變顏色,但它說('A''Z')是'期望'的問題,但收到一個字符串文字''一個'' '。我不知道如何解決它。任何幫助表示感謝,謝謝!子範圍聲明的問題
type
TCapitalLetter = ('A' .. 'Z'); //subrange of type char
TDigit = ('0' .. '9'); //subrage of type char
你的定義是接近的,但它並不完全正確:
type
TCapitalLetter = 'A'..'Z';
TDigit = '0'..9';
從您的其他問題,但是,我不認爲這就是你真正需要做的。您正在尋找會員資格(某些字符包含在該類型中),在這種情況下,您需要使用集合來完成。這是一個控制檯應用程序你可以編譯和測試:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TCapitalLetters = TSysCharSet;
TDigits = TSysCharSet;
const
CapitalLetters: TCapitalLetters = ['A'..'Z'];
Digits: TDigits = ['0'..'9'];
var
Temp, Output: string;
Ch: Char;
begin
Output := '';
Temp := 'Seems A Nice Test Answer';
for Ch in Temp do
if CharInSet(Ch, CapitalLetters) then
Output := Output + Ch;
WriteLn(Output);
ReadLn;
end.
對於德爾福的早期(非Unicode)的版本,你需要使用set of Char
代替TSysCharSet
,並使用一個稍微不同的語法爲集合成員:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TCapitalLetters = set of Char;
TDigits = set of Char;
const
CapitalLetters: TCapitalLetters = ['A'..'Z'];
Digits: TDigits = ['0'..'9'];
var
Temp, Output: string;
Ch: Char;
begin
Output := '';
Temp := 'Seems A Nice Test Answer';
for Ch in Temp do
if Ch in CapitalLetters then
Output := Output + Ch;
WriteLn(Output);
ReadLn;
end.
輸出測試應用程式:
從字面上看,只需要刪除括號...知道這將是一件小事。鑑於你的第二個建議,這是一個好主意,但不是我想要做的密碼強度計。謝謝你。隨着我現在的代碼仍然存在問題,現在形狀不會改變顏色,直到任何文本完全退後。明天我會再看看這個。再次感謝! – user3077842
你的「密碼強度計」將需要迭代用戶輸入的文本來查看輸入了多少個UPPER,更低和數字,對嗎?我在第二個示例中使用的代碼將允許您這樣做,如果您將測試添加爲小寫字母和數字,並實現計數器而不是僅收集字母。 –
一套字符不會在Unicode Delphi中編譯,不幸的是。無論如何,使用像TCharacter.IsUpper等字符屬性測試器更清晰。 –
「它說那裏有一個問題」 不是PR的描述這對我們很有用。你從編譯器得到了什麼**精確**錯誤信息? (是的,我知道問題是什麼以及如何解決問題,但是你需要首先編輯你的問題並改進它。) –
從這個問題你可以告訴我沒有經驗。我可能錯過了一些非常簡單的東西,所以我不認爲我需要擴展更多。 – user3077842
我想解釋如何在這裏寫出更好的問題,以便您可以更快地獲得幫助。編譯器錯誤信息就在你面前;在你的問題中沒有包含它的絕對**沒有任何藉口。如果您希望我們給您**我們的時間**以幫助解決**您的問題**,您至少可以向我們提供您已有的信息,我們可以使用這些信息來做到這一點。 –