Бесплатные снипеты на заказ

revan

Client
Регистрация
29.03.2012
Сообщения
22
Благодарностей
8
Баллы
3
Всем привет!
Есть код который декодит из Base64

C#:
byte[] data = Convert.FromBase64String(project.Variables["acc_cook"].Value);
string decodedString = Encoding.UTF8.GetString(data);
return decodedString;
Обычно в конце закодированного текста всегда присутствует знак "=" (Пример: "aGVsbG8=")
Но в моих ситуациях иногда приходит текст без = в конце.
Онлайн конвертеры справляются с этим косяком и декодят нормально, но данный код вылетает с ошибкой "Недопустимая длина строки или массива знаков Base-64."

Решил данную проблему кубиками
Как думаете есть ли способ сделать фикс текста когда это необходимо одним кодом?
Заранее спасибо!
 

Sanekk

Client
Регистрация
24.06.2016
Сообщения
987
Благодарностей
388
Баллы
63
Всем привет!
Есть код который декодит из Base64

C#:
byte[] data = Convert.FromBase64String(project.Variables["acc_cook"].Value);
string decodedString = Encoding.UTF8.GetString(data);
return decodedString;
Обычно в конце закодированного текста всегда присутствует знак "=" (Пример: "aGVsbG8=")
Но в моих ситуациях иногда приходит текст без = в конце.
Онлайн конвертеры справляются с этим косяком и декодят нормально, но данный код вылетает с ошибкой "Недопустимая длина строки или массива знаков Base-64."

Решил данную проблему кубиками
Как думаете есть ли способ сделать фикс текста когда это необходимо одним кодом?
Заранее спасибо!
проверь регуляркой наличие = в конце, если нет , то добавь
 
  • Спасибо
Реакции: booms1 и revan

booms1

Client
Регистрация
20.08.2019
Сообщения
134
Благодарностей
18
Баллы
18
проверь регуляркой наличие = в конце, если нет , то добавь
Добрый день
В проекте парсится число подобного типа "20479397.07"
Так же во входных настройках проекта подаётся числа на которое нужно увеличить первое число типа "10.10"
Как их преобразовать в единый тип и сложить?
 

Fantomass

Client
Регистрация
13.04.2016
Сообщения
86
Благодарностей
36
Баллы
18
  • Спасибо
Реакции: booms1

Rafa

Client
Регистрация
21.09.2010
Сообщения
182
Благодарностей
24
Баллы
18
Доброго времени суток
Как на С# использовать несколько замен регулярками последовательно, то есть каждая следующая использует результат предыдущей
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
Доброго времени суток
Как на С# использовать несколько замен регулярками последовательно, то есть каждая следующая использует результат предыдущей
пример (хотя можно и покороче): https://zennolab.com/discussion/threads/reguljarka-dlja-chistki-teksta-ot-musora.49630/#post-372904
 
  • Спасибо
Реакции: Rafa

gomoney

Client
Регистрация
27.09.2009
Сообщения
124
Благодарностей
36
Баллы
28
как сделать изображение черно-белое - только 2 цвета без градации?

C#:
Bitmap bmp = new Bitmap(@"{-Project.Directory-}\index.jpg");
Image img = ToolStripRenderer.CreateDisabledImage(bmp);
img.Save(@"{-Project.Directory-}\result.jpg");
bmp.Dispose();
 

alexsandroid

Client
Регистрация
06.08.2018
Сообщения
91
Благодарностей
28
Баллы
18
Всем привет, нужна помощь.
В каждой строке списка нужно отсортировать числа (элементы разделенные запятыми) по возрастанию.
Пример:

HTML:
14а/1, 11, 9/2, 5, 13а, 13-б, 14-а
95/1, 54, 82а, 105, 89Б, 84
111-Н,111/О,103/13а13,111/К
103/18А,103,111-Л,134,103/17,102,142/5,111/М
132/А,130,144а,103/13,111/С,111-Ф
4/2,1/2,2 лин25,3лин22,4лин30,4/1,4лин66,1/1А
144/10,103/18,142уч.12,144Д,111/П,111/Р
142,217,103/12,111-У,144в, 144Ж,142,103/4
111/ Г/Д,111,107/109
1/7,4лин19, 50,1/4,3лин67, 1,81,3лин24,97,2лин37
67А,32,68А,64/12,73,83,1,91,14уч,25,
12,1а,2/3,2/2,1/3з,14,4,6,4/2И,13,1/3ж,
4/1,1/3,6а,1/3-В,6-6а,2Д,1А3,2,4/2,6/а,
1,1/2-А,11,1/1А,6/4,2А,1/1
 

Rdenwer

Client
Регистрация
14.10.2010
Сообщения
254
Благодарностей
61
Баллы
28
Подскажите пожалуйста
как с помощью С# взять первое предложение из списка или переменной с удалением, и положить в другую переменную.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Держи @Rdenwer
C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO;
using System.Text.RegularExpressions;
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

namespace ZennoLab.OwnCode
{
  /// <summary>
  /// A simple class of the common code
  /// </summary>
  public class CommonCode
  {
    /// <summary>
    /// Lock this object to mark part of code for single thread execution
    /// </summary>
    public static object SyncObject = new object();

    // Insert your code here
  }

  public static class Extensions
  {
      public static T RemoveAndGet<T>(this IList<T> list, int index)
      {
          lock(list)
          {
              T value = list[index];
              list.RemoveAt(index);
              return value;
          }
      }
  }
}

C#:
var lst = project.Lists["Список 1"];
var result = lst.RemoveAndGet(0);
return result;

48966
 

Вложения

AleXPrischepA

Client
Регистрация
06.05.2015
Сообщения
187
Благодарностей
86
Баллы
28
C#:
string text_message = project.Variables["text_message"].Value;
string text_chto = "A";
string text_na_chto = "{A|A}";

text_message = Macros.TextProcessing.Replace(text_message, text_chto, text_na_chto, "Text", "All");

text_chto = "B";
text_na_chto = "{B|B}";
text_message = Macros.TextProcessing.Replace(text_message, text_chto, text_na_chto, "Text", "All");

//..........КУЧА ЗАМЕН......................

text_chto = "N";
text_na_chto = "{N|N}";
text_message = Macros.TextProcessing.Replace(text_message, text_chto, text_na_chto, "Text", "All");

project.Variables["text_message"].Value = Macros.TextProcessing.Spintax(text_message, false);   // Обработка текста "Spintax"


Как это более красиво и компактно организовать!? Может уже есть готовые решения для рандомизации текстовых сообщений!?

СПАСИБО!!!
 

Rdenwer

Client
Регистрация
14.10.2010
Сообщения
254
Благодарностей
61
Баллы
28
Всем привет, нужна помощь.
Есть текст файлы в папке по номерам 1,2,3.. 10
Возможно ли их соединить в один файл последовательно?
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
C#:
 var files = Directory.GetFiles(@"Путь").OrderBy(p => Regex.Match(Path.GetFileNameWithoutExtension(p), @"\d+").Value).ToList();
            var outputFilePath = "result.txt";
            using (var outputStream = File.Create(outputFilePath))
            {
                foreach (var file in files)
                {
                    using (var inputStream = File.OpenRead(file))
                    {
                        // Buffer size can be passed as the second argument.
                        inputStream.CopyTo(outputStream);
                    }
                }


            }
}
 

сергос

Client
Регистрация
30.03.2015
Сообщения
27
Благодарностей
13
Баллы
3
Знающие люди подсобите решением с#....
1) имеем список1 в нем строки
1111
2222
3333
2) имеем таблицу в которой столбец А тоже имеет эти значения
3) нужно прочитать из списка 11111 найти его в таблице в столбце А и при полном совпадении поставить напротив в столбце В +
4) Проделать это до тех пор пока не закончатся строки в списке
5) Буду премного благодарен за помощь!

наглядно что нужно
49434
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
Знающие люди подсобите решением с#....
1) имеем список1 в нем строки
1111
2222
3333
2) имеем таблицу в которой столбец А тоже имеет эти значения
3) нужно прочитать из списка 11111 найти его в таблице в столбце А и при полном совпадении поставить напротив в столбце В +
4) Проделать это до тех пор пока не закончатся строки в списке
5) Буду премного благодарен за помощь!

наглядно что нужно
Посмотреть вложение 49434
C#:
IZennoTable table = project.Tables["Таблица 1"]; //указываем таблицу
IZennoList list =  project.Lists["Список 1"]; //указываем список
string column = "A"; //указываем наименование столбца где ищем
string column2 = "B"; //указываем наименование столбца куда пишем
string cell; // переменная под ячейки таблицы
string line; // пкеременная под строки списка

//Прогоняем весь список:
for (int i=0; i<list.Count; i++) {
    line = list[i];
    //Прогоняем весь столбец таблицы:
    for (int i2=0; i2<table.RowCount; i2++) {
        cell = table.GetCell(column, i2);
        if (cell==line) {
            // или заменните "cell==line" на "line.Contains(cell)" если надо будет не строгое совпадение, а частичное (типа строка содержит ячейку)
            table.SetCell(column2, i2, "+"); // пишем если нашли совпадение
        }   
    }
}
в зависимости от форматов подключаемой таблицы код может сбоить если у нас таблица строго на 1 колонку. То есть он не сможет создать новую ячейку справа для записи. Чтобы такого не было создавайте таблицу на 1 столбец шире (типа столбец с пустыми ячейками куда мы будем писать чтобы уже был).
П.С, На скрине в ТЗ
 
Последнее редактирование:
  • Спасибо
Реакции: сергос

сергос

Client
Регистрация
30.03.2015
Сообщения
27
Благодарностей
13
Баллы
3
orka13
Подскажите еще по такому коду(делает тоже самое только с 2 таблицами) код рабочий но появилась надобность в заменах.
изначальное число идет в таком виде 73.26.54 а сравниваемое без точек 732654
нужно добавить замену точек

C#:
var table1 = project.Tables["Tab1"];
var table2 = project.Tables["Tab2"];

lock(SyncObjects.TableSyncer)
{
    // цикл по количеству строк в Tab2
    int iterCount1 = table2.RowCount;
    for (int i = 0; i < iterCount1; i++)
    {
        string сell1 = table2.GetCell(0, i).Trim();

        // цикл по количеству строк в Tab1
        int iterCount2 = table1.RowCount;
        for (int j = 0; j < iterCount2; j++)
        {
            string cell2 = table1.GetCell(0, j).Trim();
            if (cell2 == сell1)
            {
                table1.SetCell(1, j, table2.GetCell(1, i).Trim());
            }
        }
    }
}
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
Добавить в нужное место что то типа:
C#:
cell = cell.Replace(".", "");
 
  • Спасибо
Реакции: сергос

slavyn8213

Client
Регистрация
28.10.2018
Сообщения
172
Благодарностей
39
Баллы
28
подскажите пожалуйста- количество миллисекунд, прошедших с 01.01.1970 00:00:00 по UTC. (1581334266366-сегодня было столько).Как это реализовать?
нашел -может кому пригодится- https://zennolab.com/discussion/threads/kak-poluchit-vremja.12064/
 
Последнее редактирование:

booms1

Client
Регистрация
20.08.2019
Сообщения
134
Благодарностей
18
Баллы
18
Как преобразовать число (переменную) к типу double, что бы осталось разделение дробной части и знаки после , ?
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
только если у вас в переменной значените записано с точкой , с запятой выдаст ошибку нужно сделать замену на точку.
C#:
double item = double.Parse(project.Variables["double"].Value);
вариант с заменой точки
C#:
double item = double.Parse(project.Variables["double"].Value.Replace(",",".");
 
Последнее редактирование:
  • Спасибо
Реакции: booms1

booms1

Client
Регистрация
20.08.2019
Сообщения
134
Благодарностей
18
Баллы
18
только если у вас в переменной значените записано с точкой , с запятой выдаст ошибку нужно сделать замену на точку.
C#:
double item = double.Pars(project.Variables["double"].Value);
вариант с заменой точки
C#:
double item = double.Pars(project.Variables["double"].Value.Replace(",",".");
49955
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43

booms1

Client
Регистрация
20.08.2019
Сообщения
134
Благодарностей
18
Баллы
18
поправил код в посте выше Parse а не Pars
Я правильно понимаю, что в переменной должна быть . ? с точкой не работает, а вот если запятая, всё отрабатывает, но из 611,00 получается просто 611
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
Все отрабатывает верно
вы внимательно просмотрите сниппеты

 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Насчёт конвертирования в double. Не забывайте что у каждого свой разделитель. Где то точка, где то точка с запятой
C#:
var res = double.Parse(project.Variables["double"].Value, CultureInfo.InvariantCulture);
Данному сниппету без разницы)
 

antonfrost

Новичок
Регистрация
11.02.2020
Сообщения
10
Благодарностей
1
Баллы
3
Регистрация
12.07.2014
Сообщения
916
Благодарностей
371
Баллы
63
Салют!
Ребят помогите с кодом.
Нужно что бы поток поместил в глобальную переменную время unixtime

C#:
project.GlobalVariables["MyNamespase", "time_counter"]
+ как скопировать из локальной переменной потока в глобальную?
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
741
Баллы
113
Привет. Нужны математические действия с числами, в вики есть сипнет
C#:
 //преобразование значений переменных проекта в целые числа и их передача в переменные сниппета
   int a = int.Parse(project.Variables["var1"].Value);
   int b = int.Parse(project.Variables["var2"].Value);

   // вычисление суммы и передача результата вычисления в переменную проекта
   return a - b;
Цель будет брать последний столбец
1582560699671.png
и сравнивать с новыми, которые будут значение и подписывать или плюс или минус.
1582560818285.png
Если первая переменная имеет 30, вторая 27 мы получаем ответ чисто 3 без плюса
и то же самое на оборот, только получается -3 с минусом.
1582560945855.png
Если все две переменные по 30, то получаем ноль.
Как сделать, чтобы получать, +3 или -3, а если все равно, не получить ни чего?
 

Арман

Client
Регистрация
04.07.2019
Сообщения
137
Благодарностей
32
Баллы
28
Здравствуйте помогите сделать всё тоже самое только С# код, и если можно подпишите строки кода за что отвечают
 

Вложения

  • Спасибо
Реакции: Radzhab

twisterrr

Client
Регистрация
25.12.2011
Сообщения
284
Благодарностей
23
Баллы
18
подскажите плз, простая задача из строки разделенная запятыми, нужно рандомно взять одно слово/словосочетание например: слово, второе слово, три, четыре пять шесть, один.
 

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