Запуск скрипта в среде PowerShell

Необходимо организовать запуск скриптов Powershell. Для примера запустим скрипт ps1, в котором получаем результат работы другого скрипта ps1 и работаем с этим значением.

Напишем первый скрипт, который будет что то возвращать, например json значение какого либо ключа

GetSomeValue.ps1
$answer = $ResponseAnswer.Content | Out-String | ConvertFrom-Json
return $answer.someJsonKey

Теперь напишем скрипт, который запустить первый скрипт получит значение и выведет его на экран

CheckValue.ps1
$GetValue = & "$PSScriptRoot\GetSomeValue.ps1"
If ($GetValue -eq "Ice") {
 write-Host "Success Value is "  $GetValue 
 }Else
{
  write-Host "Failed Value is "  $GetValue  
}

Переменные для имени колонки ms sql

MsSql_Declare Переменные в ms sqlНеобходимо заменить название имени столбца на значение из переменной.  То есть брать название столбца из переменной. В Ms SQL  это можно сделать достаточно просто через  exec().

Итак стандартный запрос

SELECT '001' AS [CODLIS]
, DATAVAL
, stuff(tbl.COD, 10, 2, 'DL') AS CODART
, tbl.DL AS PR
FROM
tbl
WHERE
tbl.DL > 0

Как видно текст DL встречается аж в 3 местах. Вот его нам надо заменить на свою переменную, чтобы меняя только значение переменной менять и имя колонки и текст в функции stuff.

Делается это так.

Создаём 2 переменные. В одной будет имя колонки, в другой сам запрос.

DECLARE @str varchar(3000),@nameCol varchar(2); 

Устанавливаем значения. Не забываем про двойной апостроф

Set  @nameCol = 'DL'

Set @str = 'SELECT ''001'' AS [CODLIS]
     , ''03.28.2015 0:00:00'' AS DATAVAL
     , stuff(tbl.COD, 10, 2, '''+@nameCol+''') AS CODART
     , '+@nameCol+' AS PR
FROM
 tbl
WHERE
 '+@nameCol+' > 0'

Теперь запускаем наш запрос используя exec()

exec(@str)

Вот собственно и все, меняя значение переменной @nameCol меняем и сам запрос и имена столбцов.

Jscript Группировка в ассоциативном массиве с подсчетом

Listing jscript группировка

Есть данные: цвет. У каждого цвета свой размер (может повторятся). Необходимо сделать группировку в jscript по цвету и повторяющиеся размеры посчитать.

Вывести все это.

Для начала создадим массив наших данных. Нам для это надо создать массив массивов.

var array_res = new Array();
.....// тут цикл в котором получаю данные
array_res[i]=new Array ();
array_res[i].push(color,fasA+'x'+fasL+';'); //Получается вида [["Красный","716x396"],[....,....]]
....
//запускаем процедуру для группирования
  print_Group(array_res);

Сама функция для группировки с комментариями. Тут используются ассоциативные массивы.

function print_Group(arr_res){
  gr = [];  
   // Для каждого цвета собираем  его размеры 
for (var i = 0; i < arr_res.length; i++) {
  if (gr[arr_res[i][0]]== null ) {gr[arr_res[i][0]]="";}
   gr[arr_res[i][0]] += arr_res[i][1];
  }  

// группируем и считаем элементы
for (var k in gr) {
 // Выводим цвет 
document.write('<tr><td colspan="2"><b>'+ k + '</b></td></tr>');
c = []; 
t_c = gr[k].split(';'); //получаем массив всех размеров 
for (var i = 0; i < t_c.length-1; i++) {
 if (c[t_c[i]]== null) c[t_c[i]] = 0; 
  c[t_c[i]] +=1; // счетчик одинаковых размеров 
}
 //выводим размер и его количество
   for (var t in c) {
 document.write('<tr><td colspan="2">'+t + '= ' + c[t] +' шт'+ '</td></tr>'); 
   }
 }
}

Вот такая группировка получается в итоге.

group_array

C# Разрезать изображение на части

before_Cut C# Разрезать изображение
Необходимо вырезать часть  картинки из pictureBox и показать на форме.

Сначала в битмапе формируем нужную  часть, затем передаем в picturebox.

Код:

public Bitmap CutImage(Bitmap src, Rectangle rect)
        {
           
            Bitmap bmp = new Bitmap(src.Width, src.Height); //создаем битмап

            Graphics g = Graphics.FromImage(bmp); 

            g.DrawImage(src, 0, 0, rect, GraphicsUnit.Pixel); //перерисовываем с источника по координатам

            return bmp;
        }

В обработчике нажатия кнопки пишем следующее:

private void button1_Click(object sender, EventArgs e)
        {
            Image temp = pictureBox1.Image;// берем картинку или Image.FromFile("D:\\123.png");
            Bitmap src = new Bitmap(temp, pictureBox1.Width, pictureBox1.Height); 
            // Задаем нужную область вырезания (отсчет с верхнего левого угла)
            Rectangle rect = new Rectangle(new Point(0, 0), new Size(pictureBox1.Width/2, pictureBox1.Height/2));
            // передаем в нашу функцию   
            Bitmap CuttedImage = CutImage(src, rect);
            // результат изображение передаем на форму 
            pictureBox1.Image = CuttedImage;
        }

Получилось  вот такое изображение после вырезания.

Cut_image

Delphi cxTreeList — свой стиль для определенных строк

cxTreeList  - свой стиль

Среда DELPHI.
В компоненте cxTreeList  понадобилось для определенных значений (больше 0) использовать свой стиль .

Для этого можно использовать событие cxTreeList1StylesGetContentStyle.

Сначала создаем свои стили.  Например в этом случае нам нужно 2 стиля.  Стиль обычный и  стиль с жирный шрифтом.

Затем пишем следующий код в cxTreeList1StylesGetContentStyle.

 procedure TMForm.cxTreeList1StylesGetContentStyle(
  Sender: TcxCustomTreeList; AColumn: TcxTreeListColumn; ANode: TcxTreeListNode;
  var AStyle: TcxStyle);
begin
       //в этом примере значение для сравнения во второй колонке
        if VarIsNull(ANode.Values[cxTreeList1Column2.ItemIndex])  then Exit; 
       
        if ANode.Values[cxTreeList1Column2.ItemIndex] > 0  then
          begin
            AStyle := cxstyl1; // стиль для >0 
           end
       else
          AStyle := cxstyl2; // стиль для = 0
End

получаем результат

TreeList