Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Вопросы по AFL Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
fujis84



Зарегистрирован: 07.01.2014
Сообщения: 56

СообщениеДобавлено: Пн Июн 22, 2015 1:46 pm Ответить с цитатой Вернуться к началу

Swell писал(а):
Может кто-нибудь знает.
Переменная типа string какой максимальной длины (в символах) строку может содержать? В help'е у меня этого найти не получилось...


нет предела
Посмотреть профиль Отправить личное сообщение
inivin



Зарегистрирован: 28.02.2015
Сообщения: 12

СообщениеДобавлено: Вт Сен 01, 2015 10:04 am Ответить с цитатой Вернуться к началу

А как переменной типа string присвоить разные значения в зависимости от условия? IIF не подходит.
Посмотреть профиль Отправить личное сообщение
inivin



Зарегистрирован: 28.02.2015
Сообщения: 12

СообщениеДобавлено: Вт Сен 01, 2015 11:08 am Ответить с цитатой Вернуться к началу

inivin писал(а):
А как переменной типа string присвоить разные значения в зависимости от условия? IIF не подходит.


Нашел сам в FAQ

IIf is for arrays, WriteIf is for strings

IIf functions should be used to handle arrays, if you need conditional text function use WriteIf instead.

EXAMPLE

Incorrect code:

variable = IIf(Condition, "Text 1","Text 2" ); // WRONG

IIf( ) function returns array, NOT STRING, so it’s impossible to assign text to variable with use of IIF. Use WriteIf( ) function instead:

Correct code:

variable = WriteIf( condition, "Text 1", "Text 2" ); // CORRECT

Please note however that WriteIf function returns just single STRING, not arrays of strings, so only the selected value is used for evaluation.
Посмотреть профиль Отправить личное сообщение
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Чт Сен 03, 2015 10:22 am Ответить с цитатой Вернуться к началу

А как-нибудь можно определить длину текста в пикселях?
Мне это надо, чтобы выводить текст в прямоугольнике (GfxRectangle(...)). Т.е. чтобы знать ширину этого прямоугольника, чтобы текст в нём поместился.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Чт Сен 03, 2015 10:46 am Ответить с цитатой Вернуться к началу

Функция GfxDrawText( ''text'', left, top, right, bottom, format = 0 )
выводит текст в заданный прямоугольник автоматически его форматируя.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Чт Сен 03, 2015 12:40 pm Ответить с цитатой Вернуться к началу

Олег.
В функции GfxDrawText жёстко задаются размеры прямоугольника (left, top, right, bottom). И уже под эти размеры выравнивается текст. А мне надо наоборот, чтобы под определённую длину текста подгонялись размеры прямоугольника.
Проблема в том, что длину текста можно определить в символах (функция StrLen), а размеры прямоугольника задаются в пикселях. И как одно пересчитать в другое - непонятно.
Посмотреть профиль Отправить личное сообщение
yser



Зарегистрирован: 30.11.2011
Сообщения: 76

СообщениеДобавлено: Чт Сен 03, 2015 1:09 pm Ответить с цитатой Вернуться к началу

Swell писал(а):
Олег.
В функции GfxDrawText жёстко задаются размеры прямоугольника (left, top, right, bottom). И уже под эти размеры выравнивается текст. А мне надо наоборот, чтобы под определённую длину текста подгонялись размеры прямоугольника.
Проблема в том, что длину текста можно определить в символах (функция StrLen), а размеры прямоугольника задаются в пикселях. И как одно пересчитать в другое - непонятно.


GfxGetTextWidth(''text'') - The function returns pixel width of specified string
Посмотреть профиль Отправить личное сообщение
Swell



Зарегистрирован: 18.01.2013
Сообщения: 117

СообщениеДобавлено: Чт Сен 03, 2015 3:56 pm Ответить с цитатой Вернуться к началу

Спасибо. Это как раз то, что надо.
Только эта функция есть в более поздней версии, чем та, что у меня. Видимо поэтому я о ней не знал.
Похоже придётся переходить на другую версию.
Посмотреть профиль Отправить личное сообщение
Walker



Зарегистрирован: 03.04.2015
Сообщения: 9

СообщениеДобавлено: Пн Сен 07, 2015 9:09 pm Ответить с цитатой Вернуться к началу

Заметил, что функции ExRem и Flip не работают в том случае, если в качестве первого параметра при вызове этих функций указывается массив, отличный от стандартных типа Buy.
Подскажите, пожалуйста - так и должно быть или у меня что-то неправильно написано/работает?
Посмотреть профиль Отправить личное сообщение
Walker



Зарегистрирован: 03.04.2015
Сообщения: 9

СообщениеДобавлено: Пн Сен 07, 2015 9:33 pm Ответить с цитатой Вернуться к началу

Walker писал(а):
Заметил, что функции ExRem и Flip не работают в том случае, если в качестве первого параметра при вызове этих функций указывается массив, отличный от стандартных типа Buy.
Подскажите, пожалуйста - так и должно быть или у меня что-то неправильно написано/работает?

Кажется, понял, в чем ошибка. Забыл, что результат выполнения функций ExRem и Flip нужно присваивать массиву. Вызывал их просто как процедуры.
Посмотреть профиль Отправить личное сообщение
Enhema



Зарегистрирован: 25.12.2014
Сообщения: 36

СообщениеДобавлено: Вт Сен 22, 2015 2:20 pm Ответить с цитатой Вернуться к началу

Такой вопрос:
При наступлении нового дня вызывать функцию.
Понятно что if и Day() не дружат.
Как это можно сделать?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вт Сен 22, 2015 4:38 pm Ответить с цитатой Вернуться к началу

Вопрос слишком общий. Не понятно как ответить. Давай конкретнее.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Walker



Зарегистрирован: 03.04.2015
Сообщения: 9

СообщениеДобавлено: Ср Сен 23, 2015 1:41 am Ответить с цитатой Вернуться к началу

Enhema писал(а):
Такой вопрос:
При наступлении нового дня вызывать функцию.
Понятно что if и Day() не дружат.
Как это можно сделать?


Если я Вас правильно понял, то, например, так:
Result = IIf(Day() != Ref(Day(), -1), MyFunction(), 0);
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Сен 23, 2015 1:47 am Ответить с цитатой Вернуться к началу

Не, такая запись смысла не имеет. Зачем в таком случае затевать функцию в коде?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Walker



Зарегистрирован: 03.04.2015
Сообщения: 9

СообщениеДобавлено: Ср Сен 23, 2015 2:07 am Ответить с цитатой Вернуться к началу

000 писал(а):
Не, такая запись смысла не имеет. Зачем в таком случае затевать функцию в коде?


Ну, если он перебирает элементы массива в цикле, то тогда такой вариант:

DayArray = Day();
for( i = 1; i < BarCount; i++ )
{
if (DayArray[i-1] != DayArray[i])
MyFunction();
}
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen