{-Project.Directory-} в коде C#?

sergeda

Client
Регистрация
15.09.2011
Сообщения
294
Благодарностей
16
Баллы
18
Подскажите плиз как получить значение {-Project.Directory-} в коде C#?
Пробовал
project.Variables["Directory"].Value
project.Variables["Project.Directory"].Value
ругается на несуществующую переменную
 

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
string directory = @"{-Project.Directory-}";
 
  • Спасибо
Реакции: impul5e, Lexicon и sergeda

sergeda

Client
Регистрация
15.09.2011
Сообщения
294
Благодарностей
16
Баллы
18

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
{-Project.Directory-} является макро поэтому он не может быть использован в качестве переменной.
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
Ух какие фишечки выплывают))) а я и не знал)
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
Ух какие фишечки выплывают))) а я и не знал)
Это не фишечка т.к. в коде
JavaScript:
string directory = @"{-Project.Directory-}";
всегда будет иметь значение "{-Project.Directory-}" правильно получить директорию проекта можно так:
JavaScript:
string directory = project.Directory;
 
  • Спасибо
Реакции: Rimen и Marcelo

sergeda

Client
Регистрация
15.09.2011
Сообщения
294
Благодарностей
16
Баллы
18
Это не фишечка т.к. в коде
JavaScript:
string directory = @"{-Project.Directory-}";
всегда будет иметь значение "{-Project.Directory-}" правильно получить директорию проекта можно так:
JavaScript:
string directory = project.Directory;
Я сделал через
Код:
string directory = @"{-Project.Directory-}";
как советовал bigcajones и все нормально работает
 

shade

Client
Регистрация
19.11.2010
Сообщения
580
Благодарностей
346
Баллы
63
Я сделал через
Код:
string directory = @"{-Project.Directory-}";
как советовал bigcajones и все нормально работает
Мда удивительно.
значит и такой код работает:
JavaScript:
string value = @"{-Variable.var-}";
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
901
Баллы
113
я же говорю фишечка))))
 

darkdiver

Administrator
Команда форума
Регистрация
13.01.2009
Сообщения
2 285
Благодарностей
2 730
Баллы
113
не надо так писать.
если с string directory = @"{-Project.Directory-}"; ещё прокатит, то с переменными это работать не будет т.к. они меняются, а код компилируется один раз в начале выполнения.
в общем правильный вариант
C#:
string directory = project.Directory;
макросы в C# коде выполняются один раз при компиляции при первом запуске.
 

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
Sorry, works for me.:cb:
 

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
А что мне дописать к коду если я хочу указать папку Tmp находящуюся в project.Directory ?
 

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
Код:
string directoryTmp = project.Directory + @"\tmp\";
???
 
  • Спасибо
Реакции: luk911

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
Я наверное вас достал уже с этим кодом:ce:, но что то project.Directory не хочет работать...
Код:
//Reduce image with saving its proportion
Func<System.Drawing.Image, int, int, System.Drawing.Image> imgReduse = (System.Drawing.Image _img, int _width, int _height) => {
var _rx = (double)_img.Width/_width;
var _ry = (double)_img.Height/_height;
var _ratio = Math.Min(_rx, _ry);
var _newW = (int)(_img.Width/_ratio);
var _newH = (int)(_img.Height/_ratio);
return new System.Drawing.Bitmap(_img, _newW, _newH);
};
string imagePath = project.Variables["AAA"].Value;
string directoryTmp = project.Directory + @"\tmp\00.JPG";

int imagePath1 = Convert.ToInt32(project.Variables["HHH"].Value);
int imagePath2 = Convert.ToInt32(project.Variables["WWW"].Value);

// Create image file
System.Drawing.Image tempimg = System.Drawing.Image.FromFile(imagePath);
System.Drawing.Image img = imgReduse(tempimg, imagePath1, imagePath2);
// Save new image
img.Save(directoryTmp, System.Drawing.Imaging.ImageFormat.Jpeg);
tempimg.Dispose();
img.Dispose();
Ошибка общего вида... Когда вместо project.Directory + @"\tmp\00.JPG" стоит конкретный путь всё работает...
 

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
Строки 11 и 20.
 

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
Ой всё правильно, я просто хотел в project.Directory другого проекта где не было папки tmp сохранить)))
Сотрите мои последние 3 коммента:ah:
 

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
Вопрос не отходя от кассы.
А как теперь если я хочу значение переменной string directoryTmp = project.Directory + @"\tmp\00.JPG"; использовать не через свой C#, а через интерфейс Проджект мейкера, вставить куда нибудь, как ее правильно записывать?
 

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
{-Variable.directoryTmp-} ???
 

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113
tagda tybje nada otpravikj etu informaciju na project. Vot tak

project.Variables["directoryTmp"].Value = project.Directory + @"\tmp\00.JPG";

I togda on i budjet zdjes {-Variable.directoryTmp-}
 
  • Спасибо
Реакции: OTEC_SERGIUS

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Благодарностей
69
Баллы
28
Всё робит спс!:dk:
 

Sorrow

Пользователь
Регистрация
02.01.2019
Сообщения
36
Благодарностей
2
Баллы
8
в продолжение темы, а как правильно прописать в C# путь из кубика сохранения профиля проекта? Кубик иногда ошибку выдает, надо его в C# перевести.
{-Project.Directory-}profiles\profile_{-TimeNow.TimeNow-}.zpprofile

 

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
307
Баллы
63
в продолжение темы, а как правильно прописать в C# путь из кубика сохранения профиля проекта? Кубик иногда ошибку выдает, надо его в C# перевести.
{-Project.Directory-}profiles\profile_{-TimeNow.TimeNow-}.zpprofile

Как-то так :-)
C#:
string path = $@"{project.Directory}\profiles\profile_{DateTime.Now.ToString("yyyy-MM-dd    HH-mm-ss--fff")}.zpprofile";
 
  • Спасибо
Реакции: Sorrow и Roman48

Sorrow

Пользователь
Регистрация
02.01.2019
Сообщения
36
Благодарностей
2
Баллы
8
Как-то так :-)
C#:
string path = $@"{project.Directory}\profiles\profile_{DateTime.Now.ToString("yyyy-MM-dd    HH-mm-ss--fff")}.zpprofile";
Не работает, ошибки выдает... Перепробовал всякие варианты этой строки, что то тут не так, я не очень в С#
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
454
Баллы
63
Не работает, ошибки выдает... Перепробовал всякие варианты этой строки, что то тут не так, я не очень в С#
C#:
string path = project.Directory + $@"\profiles\profile_{DateTime.Now.ToString("yyyy-MM-dd    HH-mm-ss--fff")}.zpprofile";
 

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
307
Баллы
63
Не работает, ошибки выдает... Перепробовал всякие варианты этой строки, что то тут не так, я не очень в С#
Возможно, дело в интерполяции (версия зенки не та), вот без неё:
C#:
string path = project.Directory + @"\profiles\profile_" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss--fff") + ".zpprofile";
P.S. Ошибка возможна ещё в новом проекте, который ни разу не сохранялся, а значит не имеет своей директории.
 
Последнее редактирование:
  • Спасибо
Реакции: Sorrow

Sorrow

Пользователь
Регистрация
02.01.2019
Сообщения
36
Благодарностей
2
Баллы
8
Возможно, дело в интерполяции (версия зенки не та), вот без неё:
C#:
string path = project.Directory + @"\profiles\profile_" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss--fff") + ".zpprofile";
P.S. Ошибка возможна ещё в новом проекте, который ни разу не сохранялся, а значит не имеет своей директории.
Этот вариант работает, спасибо.
 

Stat

Client
Регистрация
28.09.2021
Сообщения
21
Благодарностей
2
Баллы
3
Всем добрый день, может кто сможет подсказать

есть код

C#:
//Создание переменных
var PList = project.Lists["Список профилей"];
DateTime RefreshTime;
DateTime minTime = Convert.ToDateTime("01.01.2050");
int min = 0;

//Поиск профиля
for(int i=0;i < PList.Count;i++)
{
    RefreshTime = new System.IO.DirectoryInfo(PList).LastWriteTime;
    if(minTime>RefreshTime)
    {
        min = i;
        minTime = RefreshTime;
      
    }
}
return min;
//"Результат ложем в переменную, берет число из списка профилей, число-порядковый номер самого старого профиля"
Создаем переменную, во входных настройках где указываем путь к нашим Профилям, затем экшеном "Получить список файлов" ложем все наши Профили (путь прописываем переменной что создали) в "Список профилей" и уже там ищем самый старый профиль.

А можно как то сделать так что бы код искал самый старый Профиль не из созданного списка, а через переменную директории (грубо говоря искал самый старый Профиль что лежит у меня на компе)
 
Последнее редактирование модератором:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
А можно как то сделать так что бы код искал самый старый Профиль не из созданного списка, а через переменную директории (грубо говоря искал самый старый Профиль что лежит у меня на компе)
у тебя код как раз и ищет самый старый Профиль. Или он не рабочий ?
 

Stat

Client
Регистрация
28.09.2021
Сообщения
21
Благодарностей
2
Баллы
3
у тебя код как раз и ищет самый старый Профиль. Или он не рабочий ?
Все верно, он рабочий.
Проблема в чем, когда я запускаю в многопотоке, он может взять один и тот же Профиль, как самый старый.
Если честно пока ни как не могу придумать как быть, когда запущена много потоков.

Просто как вариант, если будет брать Профиль из папки, отдает номер самого старого Профиля и тут я от этого числа рандомно еще отнимаю 0-60, что бы пересечений не было. Но если честно уже не кажется это хорошей идеей, точнее что так получится вообще.
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)