|
![]() |
#1 |
Участник
|
Ошибка:
Значение COPYSTR параметра 3 находится за пределам и разрешеного интервала. Текущие значение: -1 Код: // calc work&fact time and salary by months PayrollCalculate.CalcTimes(EmployeeSalary,UOM,TypeCalc::Vacation,VacationData,MQty,TotalSalary,Month); TempDate := "Starting Date AE"; FOR i := 1 TO 12 DO BEGIN IF (Month[i] <> '') THEN BEGIN TmpMonth := Month[i]; Month[i] := COPYSTR(TmpMonth,1,STRLEN(TmpMonth)-4); Y[i] := COPYSTR(TmpMonth,STRLEN(TmpMonth)-4,5); END; END; |
|
![]() |
#2 |
Участник
|
В TmpMonth у вас передается строка "Авг". Не "Август 2006", а "Авг". COPYSTR пытаясь срезать с конца 4 символа получает, что последний аргумент равен -1. Ищите почему в TmpMonth попадает "Авг".
Юзайте дебагер, сразу все станет понятно и без форума. |
|
![]() |
#3 |
Участник
|
Код: // calc work&fact time and salary by months PayrollCalculate.CalcTimes(EmployeeSalary,UOM,TypeCalc::Vacation,VacationData,MQty,TotalSalary,Month); TempDate := "Starting Date AE"; FOR i := 1 TO 12 DO BEGIN IF (Month[i] <> '') THEN BEGIN TmpMonth := Month[i]; // <-- ТУТ ПОСТАВЬТЕ ТОЧКУ ОСТАНОВА Month[i] := COPYSTR(TmpMonth,1,STRLEN(TmpMonth)-4); Y[i] := COPYSTR(TmpMonth,STRLEN(TmpMonth)-4,5); END; END; |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от by_HT
![]() Ошибка:
Значение COPYSTR параметра 3 находится за пределам и разрешеного интервала. Текущие значение: -1 // calc work&fact time and salary by months PayrollCalculate.CalcTimes(EmployeeSalary,UOM,TypeCalc::Vacation,VacationData,MQ ty,TotalSalary,Month); TempDate := "Starting Date AE"; FOR i := 1 TO 12 DO BEGIN IF (Month[i] <> '') THEN BEGIN TmpMonth := Month[i]; Month[i] := COPYSTR(TmpMonth,1,STRLEN(TmpMonth)-4); Y[i] := COPYSTR(TmpMonth,STRLEN(TmpMonth)-4,5); END; END; После 1 прохода переменная TmpMonth принимает полное значение. После второго прохода еще урезается на 4 символа!! (или я неправильно его читаю??) |
|
![]() |
#5 |
Участник
|
Нет. TmpMonth судя по всему не массив и принимает значение одного из элементов Month[]. В цикле идет последовательное присвоение нового значения Month[i]. А COPYSTR() урезает TmpMonth. То есть по идее последовательного урезания не должно быть.
|
|