2015-04-20 6 views
2

У Delphi есть эквивалент Код csharp alphabet.max где алфавит - строковая переменная или есть эквивалентная функция?эквивалентная функция enumerable.max в delphi

Я пытаюсь передать следующий код из csharp в delphi.

string alphabet = "ABCD"; 
invalphabet = new int[alphabet.Max() + 1]; 

https://msdn.microsoft.com/en-us/library/bb347632(v=vs.90).aspx

благодарит

+2

И что бы изменил alphabet.max()? Значение последнего элемента в алфавите? Количество элементов в алфавите? Самое высокое значение в алфавите? –

+0

@ Необъяснимый размер Нет. Он вернет наивысшее значение «Char», где «Char» - это 16-разрядный тип символа UTF-16 –

+0

Я исправил код. Это 'Max()', а не 'max()'. –

ответ

4

Вы, вероятно, ищете что-то вроде этого:

uses 
    Math; // for the Max function 
.... 
var 
    i: Integer; 
    invalphabet: array of Integer; 
    maxOrdinal: Integer; 
.... 
maxOrdinal := -1; 
for i := 1 to Length(alphabet) do 
    maxOrdinal := Max(maxOrdinal, ord(alphabet[i])); 
if maxOrdinal = -1 then 
    // handle error condition 
SetLength(invalphabet, maxOrdinal + 1); 

жив возможных несовпадений кодирования. Код C# использует UTF-16, а код Delphi использует UTF-16 или ANSI в зависимости от версии Delphi. Конечно, вы можете предоставить alphabet, который ограничен ASCII.

+0

великолепный ответ. спасибо –

+1

@LURD Спасибо за редактирование –

Смежные вопросы