Русский > Разработчикам
Разработка скриптов (вопросы)
Aig:
--- Цитата: djek-ural от 06 Января 2009, 13:54:13 ---[Error] (688:9): Syntax error
[Error] (688:9): Syntax error
на строке под номером 688 , записано следуюшее
pri := `` ;
переменная типа WideString
У меня есть описание ошибок для Турбо Паскаля , но там номера этой ошибки нет
--- Конец цитаты ---
Давненько не брал я в руки шашек... На дельфе уже не программирую, но в паскале по-моему не было таких кавычек - `. По крайней мере я не видел, чтобы их использовали. Попробуй заменить ` на нормальные - ' .
nostra:
--- Цитировать ---Попробуй заменить ` на нормальные - ' .
--- Конец цитаты ---
Да, действительно кавычки не те.
djek-ural:
--- Цитата: nostra от 08 Января 2009, 17:44:39 ---
--- Цитировать ---Попробуй заменить ` на нормальные - ' .
--- Конец цитаты ---
Да, действительно кавычки не те.
--- Конец цитаты ---
Да с кавычками я действительно обложался , в книге написано было выделять апострофом , вот и подумал что тот который был в строке рядом с цифрами , где буква Ё .
Огромное спасибо Aig за подсказку :) :) :)
Alik:
To: djek-ural
Во первых несколькими постами выше указана неправильная функция CheckNum
Правильно так:
--- Код: ---// Удаляет из строки все, что не является цифрой
function CheckNum(s: widestring): widestring;
var
st: widestring;
i: integer;
begin
if pos('€', s) > 0 then
delete(s, 1, 7);
if pos('¥', s) > 0 then
delete(s, 1, 6);
for i := 1 to length(s) do
if (s[i] >= '0') and (s[i] <= '9') then
st := st + s[i];
result := st;
end;
--- Конец кода ---
Обратите внимание на квадратные скобки после переменной s, в которых указан индекс символа.
Во вторых сделать преобразование времени в нужный формат можно проще:
--- Код: ---// Возвращает число, переведенное в текст. Преобразует значения вида Х в значение вида 0Х
// То есть, например, заменяет 1 на 01.
Function Zero(I: Integer): WideString;
Var
S: String;
Begin
S := IntToStr(I);
If Length(S) = 1 Then S := '0' + S;
result := S;
End;
// Функция перевода времени из формата ХХХ мин в формат ХХ:ХХ:ХХ
Function CorrectTime(Time: WideString): WideString;
Var
Tmp: Integer;
Begin
Tmp := StrToInt(CheckNum(Time));
Result := Zero(Tmp Div 60)+':'+Zero(Tmp Mod 60)+':00'; // Два нуля в конце - это секунды, можно убрать
End;
--- Конец кода ---
Я не тестил, но 99% код рабочий.
djek-ural:
--- Цитата: Alik от 09 Января 2009, 12:36:40 ---To: djek-ural
Во первых несколькими постами выше указана неправильная функция CheckNum
Правильно так:
--- Код: ---// Удаляет из строки все, что не является цифрой
function CheckNum(s: widestring): widestring;
var
st: widestring;
i: integer;
begin
if pos('€', s) > 0 then
delete(s, 1, 7);
if pos('¥', s) > 0 then
delete(s, 1, 6);
for i := 1 to length(s) do
if (s[i] >= '0') and (s[i] <= '9') then
st := st + s[i];
result := st;
end;
--- Конец кода ---
Обратите внимание на квадратные скобки после переменной s, в которых указан индекс символа.
Во вторых сделать преобразование времени в нужный формат можно проще:
--- Код: ---// Возвращает число, переведенное в текст. Преобразует значения вида Х в значение вида 0Х
// То есть, например, заменяет 1 на 01.
Function Zero(I: Integer): WideString;
Var
S: String;
Begin
S := IntToStr(I);
If Length(S) = 1 Then S := '0' + S;
result := S;
End;
// Функция перевода времени из формата ХХХ мин в формат ХХ:ХХ:ХХ
Function CorrectTime(Time: WideString): WideString;
Var
Tmp: Integer;
Begin
Tmp := StrToInt(CheckNum(Time));
Result := Zero(Tmp Div 60)+':'+Zero(Tmp Mod 60)+':00'; // Два нуля в конце - это секунды, можно убрать
End;
--- Конец кода ---
Я не тестил, но 99% код рабочий.
--- Конец цитаты ---
Спасибо большое за подсказку , я так то прогрммировал на Бейсике , и это моё первое творение на Паскале , возможно что некоторых функций процедур я еще не знаю...
Последнеяя моя редакция также была немного оптимизирована , за счет выведения нескольки строк кода в разряд процедур...
Навигация
Перейти к полной версии