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

revan

Client
Joined
Mar 29, 2012
Messages
24
Reaction score
10
Points
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
Joined
Jun 24, 2016
Messages
999
Reaction score
390
Points
63
Всем привет!
Есть код который декодит из Base64

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

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

booms1

Client
Joined
Aug 20, 2019
Messages
137
Reaction score
18
Points
18
проверь регуляркой наличие = в конце, если нет , то добавь
Добрый день
В проекте парсится число подобного типа "20479397.07"
Так же во входных настройках проекта подаётся числа на которое нужно увеличить первое число типа "10.10"
Как их преобразовать в единый тип и сложить?
 

Fantomass

Client
Joined
Apr 13, 2016
Messages
87
Reaction score
38
Points
18
Как их преобразовать в единый тип и сложить?
C#:
double a = Convert.ToDouble("20479397,07");
double b = Convert.ToDouble("10,10");
double c = a + b;
 
  • Thank you
Reactions: booms1

Rafa

Client
Joined
Sep 21, 2010
Messages
182
Reaction score
24
Points
18
Доброго времени суток
Как на С# использовать несколько замен регулярками последовательно, то есть каждая следующая использует результат предыдущей
 

orka13

Client
Joined
May 7, 2015
Messages
2,180
Reaction score
2,191
Points
113
  • Thank you
Reactions: Rafa

gomoney

Client
Joined
Sep 27, 2009
Messages
124
Reaction score
37
Points
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
Joined
Aug 6, 2018
Messages
97
Reaction score
29
Points
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
Joined
Oct 14, 2010
Messages
254
Reaction score
61
Points
28
Подскажите пожалуйста
как с помощью С# взять первое предложение из списка или переменной с удалением, и положить в другую переменную.
 

Radzhab

Client
Joined
May 23, 2014
Messages
1,500
Reaction score
1,268
Points
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
 

Attachments

AleXPrischepA

Client
Joined
May 6, 2015
Messages
210
Reaction score
97
Points
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
Joined
Oct 14, 2010
Messages
254
Reaction score
61
Points
28
Всем привет, нужна помощь.
Есть текст файлы в папке по номерам 1,2,3.. 10
Возможно ли их соединить в один файл последовательно?
 

Radzhab

Client
Joined
May 23, 2014
Messages
1,500
Reaction score
1,268
Points
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
Joined
Mar 30, 2015
Messages
27
Reaction score
13
Points
3
Знающие люди подсобите решением с#....
1) имеем список1 в нем строки
1111
2222
3333
2) имеем таблицу в которой столбец А тоже имеет эти значения
3) нужно прочитать из списка 11111 найти его в таблице в столбце А и при полном совпадении поставить напротив в столбце В +
4) Проделать это до тех пор пока не закончатся строки в списке
5) Буду премного благодарен за помощь!

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

orka13

Client
Joined
May 7, 2015
Messages
2,180
Reaction score
2,191
Points
113
Знающие люди подсобите решением с#....
1) имеем список1 в нем строки
1111
2222
3333
2) имеем таблицу в которой столбец А тоже имеет эти значения
3) нужно прочитать из списка 11111 найти его в таблице в столбце А и при полном совпадении поставить напротив в столбце В +
4) Проделать это до тех пор пока не закончатся строки в списке
5) Буду премного благодарен за помощь!

наглядно что нужно
View attachment 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 столбец шире (типа столбец с пустыми ячейками куда мы будем писать чтобы уже был).
П.С, На скрине в ТЗ
 
Last edited:
  • Thank you
Reactions: сергос

сергос

Client
Joined
Mar 30, 2015
Messages
27
Reaction score
13
Points
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
Joined
May 7, 2015
Messages
2,180
Reaction score
2,191
Points
113
Добавить в нужное место что то типа:
C#:
cell = cell.Replace(".", "");
 
  • Thank you
Reactions: сергос

slavyn8213

Client
Joined
Oct 28, 2018
Messages
261
Reaction score
60
Points
28
подскажите пожалуйста- количество миллисекунд, прошедших с 01.01.1970 00:00:00 по UTC. (1581334266366-сегодня было столько).Как это реализовать?
нашел -может кому пригодится- https://zennolab.com/discussion/threads/kak-poluchit-vremja.12064/
 
Last edited:

booms1

Client
Joined
Aug 20, 2019
Messages
137
Reaction score
18
Points
18
Как преобразовать число (переменную) к типу double, что бы осталось разделение дробной части и знаки после , ?
 

AZANIR

Client
Joined
Jun 9, 2014
Messages
405
Reaction score
200
Points
43
только если у вас в переменной значените записано с точкой , с запятой выдаст ошибку нужно сделать замену на точку.
C#:
double item = double.Parse(project.Variables["double"].Value);
вариант с заменой точки
C#:
double item = double.Parse(project.Variables["double"].Value.Replace(",",".");
 
Last edited:
  • Thank you
Reactions: booms1

booms1

Client
Joined
Aug 20, 2019
Messages
137
Reaction score
18
Points
18
только если у вас в переменной значените записано с точкой , с запятой выдаст ошибку нужно сделать замену на точку.
C#:
double item = double.Pars(project.Variables["double"].Value);
вариант с заменой точки
C#:
double item = double.Pars(project.Variables["double"].Value.Replace(",",".");
49955
 

AZANIR

Client
Joined
Jun 9, 2014
Messages
405
Reaction score
200
Points
43
  • Thank you
Reactions: booms1

booms1

Client
Joined
Aug 20, 2019
Messages
137
Reaction score
18
Points
18
поправил код в посте выше Parse а не Pars
Я правильно понимаю, что в переменной должна быть . ? с точкой не работает, а вот если запятая, всё отрабатывает, но из 611,00 получается просто 611
 

AZANIR

Client
Joined
Jun 9, 2014
Messages
405
Reaction score
200
Points
43
Все отрабатывает верно
вы внимательно просмотрите сниппеты

 

Radzhab

Client
Joined
May 23, 2014
Messages
1,500
Reaction score
1,268
Points
113
Насчёт конвертирования в double. Не забывайте что у каждого свой разделитель. Где то точка, где то точка с запятой
C#:
var res = double.Parse(project.Variables["double"].Value, CultureInfo.InvariantCulture);
Данному сниппету без разницы)
 

antonfrost

Новичок
Joined
Feb 11, 2020
Messages
10
Reaction score
1
Points
3
Joined
Jul 12, 2014
Messages
916
Reaction score
373
Points
63
Салют!
Ребят помогите с кодом.
Нужно что бы поток поместил в глобальную переменную время unixtime

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

Roman48

Client
Joined
Feb 28, 2016
Messages
2,058
Reaction score
746
Points
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
Joined
Jul 4, 2019
Messages
137
Reaction score
33
Points
28
Здравствуйте помогите сделать всё тоже самое только С# код, и если можно подпишите строки кода за что отвечают
 

Attachments

  • Thank you
Reactions: Radzhab

twisterrr

Client
Joined
Dec 25, 2011
Messages
284
Reaction score
23
Points
18
подскажите плз, простая задача из строки разделенная запятыми, нужно рандомно взять одно слово/словосочетание например: слово, второе слово, три, четыре пять шесть, один.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)