vitalok_mzo писав:Подскажите пожалуйста.
Если название документации "Проект ......" то нужно чтоб выдавало "проекту"
Если название документации "Техническая документ........" то нужно чтоб выдавало "технической документации ........"
А выдает только первую часть названия.
Спасибо!!!
Где ошибка?
1. Вот здесь почему Вы добавляете до переменной? Ведь там могут быть какие-то левые значения:
Код: Виділити все
TechDoc_Name := TechDoc_Name + <DM1.QiTechDoc."Name"> ;
Правильно делать так:
2. Не понятно зачем лишние опреторные скобки:
Код: Виділити все
If Length(TechDoc_Name) > 0 then
begin
begin
...
3. Не совсем правильно искать текст по окончанию слова. У Вас в названии ещё где-то оно может встречаться и тогда "вылезет боком".
4. Название может быть написано и с маленькой буквы, потому надо предварительно первую букву сделать большой:
Код: Виділити все
TechDoc_Name := UpperFirst(<DM1.QiTechDoc."Name">);
5. При поиске надо проверять чтобы первой была фраза (= 1) а не > 0, потому что "проект" может быть написано и где-то в середине:
6. А сама ошибка вот здесь:
Код: Виділити все
If Pos('Проект', TechDoc_Name) > 0 then
TechDocInfo:= TechDocInfo + Copy(TechDoc_Name, 1, Pos('ект ', TechDoc_Name)) + 'кту '
else
begin
If Pos('Технічна', TechDoc_Name) > 0 then
TechDocInfo := TechDocInfo+ Copy(TechDoc_Name, 1, Pos('чна ', TechDoc_Name)) + 'ної документації '
else
begin
If Pos('Технічний звіт', TechDoc_Name) > 0 then
TechDocInfo := TechDocInfo + Copy(TechDoc_Name, 1, Pos('чний ', TechDoc_Name)) + 'чного звіта '
else
TechDocInfo := TechDocInfo + TechDoc_Name + ' ';
end;
end;
После условия Вы ни где не присваиваете вторую часть названия технички! У Вас так и остаётся первая часть. Вторую часть надо либо после либо во время условия присваивать. Так как длина текста различная, значит надо во время условия. Правильный код вот:
Код: Виділити все
//-----------------------------------------------------------------------------------------------
// Техническая документация
TechDocInfo := ''; // Информация о технической документации
TechDoc_Name := UpperFirst(<DM1.QiTechDoc."Name">);
// ТехДок
If Length(TechDoc_Name) > 0 then
begin
If Pos('Проект', TechDoc_Name) = 1 then
TechDocInfo := TechDocInfo + 'Проекту' + Copy(TechDoc_Name, 7, Length(TechDoc_Name))
else
begin
If Pos('Технічна документація', TechDoc_Name) > 0 then
TechDocInfo := TechDocInfo + 'Технічної документації' + Copy(TechDoc_Name, 22, Length(TechDoc_Name))
else
begin
If Pos('Технічний звіт', TechDoc_Name) > 0 then
TechDocInfo := TechDocInfo + 'Технічного звіта' + Copy(TechDoc_Name, 15, Length(TechDoc_Name))
else
TechDocInfo := TechDocInfo + TechDoc_Name;
end;
end;
end;