Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как скопировать текст скрипта firebird в delphi / 25 сообщений из 27, страница 1 из 2
11.12.2020, 10:01
    #40026703
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
у меня есть длиннющая ХП в firebird и мне ее текст нужно скопировать из IBExpert в delphi.
Руками проставлять для каждой строчки кавычки и перенос строки не очень. Есть какое-то решение?

Например в PLSQL Developer есть special copy и несколько ЯП. а в IBExpert есть похожее?
...
Рейтинг: 0 / 0
11.12.2020, 10:30
    #40026713
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
cptngrb
у меня есть длиннющая ХП в firebird и мне ее текст нужно скопировать из IBExpert в delphi.
Руками проставлять для каждой строчки кавычки и перенос строки не очень. Есть какое-то решение?


В дельфи есть Ctrl-Shift-R, Ctrl-Shift-P. Для одной строки сделать вручную с переходом на следующую строчку, остальные просто спамом Ctrl-Shift-P.
...
Рейтинг: 0 / 0
11.12.2020, 10:45
    #40026719
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
короче, в notepad++ сделал макрос
1. замена ' на две ''
2. замена \n на \n'
3. замена \r на '+#13#10+\r


пока лучше не нашел выхода
...
Рейтинг: 0 / 0
11.12.2020, 11:00
    #40026725
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Я бы подключил файл как есть ресурсом RCDATA. Потому что длинные литералы сложны в поддержке.
Как вариант, можно в TQuery засунуть. Где-то мелькал еще компонент для хранения строк по такому же принципу, но без db-aware привязки, но у тебя все равно db приложение, поэтому ничего лишнего не добавится
...
Рейтинг: 0 / 0
11.12.2020, 11:03
    #40026727
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Fr0sT-Brutal, я бы тоже, но это не моя блаж
...
Рейтинг: 0 / 0
11.12.2020, 11:40
    #40026748
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
cptngrb
у меня есть длиннющая ХП в firebird и мне ее текст нужно скопировать из IBExpert в delphi.
Руками проставлять для каждой строчки кавычки и перенос строки не очень. Есть какое-то решение?

Например в PLSQL Developer есть special copy и несколько ЯП. а в IBExpert есть похожее?

Напиши эксперт для IDE, полторы строчки.
Или поищи здесь: ~раз в год кто-то задается тем же вопросом и либо пишет, либо использует готовый.
...
Рейтинг: 0 / 0
11.12.2020, 12:23
    #40026765
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
cptngrb,

ApexSQLRefactor, раньше был бесплатным.
Правда он для SMSS
Получается такой результат:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var
  sql: string;
begin
  sql := 'SELECT ''Hello Wrold!''' + #10
       + 'UNION ALL' + #10
       + 'SELECT ''Hello Again!''';
end;
...
Рейтинг: 0 / 0
11.12.2020, 13:07
    #40026800
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Для таких целей использую функцию:


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
procedure TSQLtoPascalForm.btnConvertClick(Sender: TObject);
var
  L1: TStringList;
  I: Integer;
  MaxLen: Integer;
  fc, FirstChar: Integer;
  s: string;

  function GetFirstCharPos(s: string): Integer;
  var
    I: Integer;
  begin
    Result := 0;
    for I := 1 to Length(s) do
      if (s[I] <> ' ') then
      begin
        Result := I;
        Exit;
      end;

  end;
begin
  MaxLen := 0;
  FirstChar := MaxInt;
  L1 := TStringList.Create;
  try
    L1.Text := memSQL.Text;

    // Удаляем начальные пробелы
    for I := 0 to L1.Count - 1 do
    begin
      if Trim(L1[I]) = '' then
        L1[I] := ''
      else
      begin
        fc := GetFirstCharPos(L1[I]);
        if fc > 0 then
          if fc < FirstChar then
            FirstChar := fc;
      end;
    end;

    if (FirstChar > 1) and (FirstChar < 100) then
    begin
      for I := 0 to L1.Count - 1 do
      begin
        s := L1[I];
        if s <> '' then
        begin
          if Length(s) > FirstChar then
          begin
            Delete(s, 1, FirstChar - 1);
            L1[I] := s;
          end;
        end;
      end;
    end;

    for I := 0 to L1.Count - 1 do
    begin
      s := L1[I];
      if s <> '' then
      begin
        if (Pos('--', Trim(s)) = 1) or (Pos('/*', Trim(s)) = 1) then // Отдельно обрабатываются комментарии
        begin
          fc := GetFirstCharPos(s);
          if fc >= 3 then
          begin
            s[1] := '/';
            s[2] := '/';
          end else
            s := '// ' + s;
          L1[I] := ' ' + s;
        end
        else
        begin
          L1[I] := QuotedStr(s);
          if Length(L1[I]) > MaxLen then
            MaxLen := Length(L1[I]);
        end;
      end;
    end;

    Inc(MaxLen);

    // Добавием конечные пробелы и вставляем sLineBreak
    for I := 0 to L1.Count - 1 do
    begin
      s := L1[I];
      if s <> '' then
      begin
        if I < L1.Count - 1 then
        begin
          if (Pos('//', Trim(s)) <> 1) then
            L1[I] := StrRPad(s, MaxLen) + '+sLineBreak+';
        end else
          L1[I] := L1[I] + ';';
      end;
    end;

    memPascal.Lines.Assign(L1);

  finally
    L1.Free;
  end;
end;




Достаточно симпатичный код получается на выходе.
...
Рейтинг: 0 / 0
11.12.2020, 13:24
    #40026807
maratvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
cptngrb,

в самом эксперте был такой плагин DelphiCopyPaste.
У меня что-то завалялось, не знаю, оригинальный или правленный. В любом случае исходники есть, можете сделать под себя.

Устанавливается в папку ibexpert/Plugins.
В редакторе запросов в popupmenu появится пункт Delphi Copy/Paste
...
Рейтинг: 0 / 0
11.12.2020, 13:36
    #40026812
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
cptngrb
Есть какое-то решение?

http://docwiki.embarcadero.com/RADStudio/Sydney/en/MultiPaste
...
Рейтинг: 0 / 0
11.12.2020, 13:59
    #40026827
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
всем спасибо за ответы
...
Рейтинг: 0 / 0
11.12.2020, 15:12
    #40026865
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Длиннющие процедуры как раз пишут в хп в бд
...
Рейтинг: 0 / 0
11.12.2020, 15:14
    #40026867
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
11.12.2020 10:01, cptngrb пишет:
> у меня есть длиннющая ХП в firebird и мне ее текст нужно скопировать из IBExpert в delphi.

нахрена это хранить в коде?
почему не в ресурсах?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.12.2020, 15:39
    #40026885
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Мимопроходящий
11.12.2020 10:01, cptngrb пишет:
> у меня есть длиннющая ХП в firebird и мне ее текст нужно скопировать из IBExpert в delphi.

нахрена это хранить в коде?
почему не в ресурсах?
в бд ещё лучше
...
Рейтинг: 0 / 0
11.12.2020, 15:42
    #40026888
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
11.12.2020 15:39, andreymx пишет:
>
> в бд ещё лучше
>

а если он СОЗДАЁТ этот объект в БД?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.12.2020, 15:48
    #40026896
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
А вот в Delphi были бы raw - строки 21995460 - этой хуёни бы не обсуждали.
...
Рейтинг: 0 / 0
11.12.2020, 15:50
    #40026898
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Мимопроходящийа если он СОЗДАЁТ этот объект в БД?
пусть тогда читает текст процедуры из скрипта или просто текстового файла.
Сопровождение кода процедуры, обрамленной кавычками в коде - это же кабздец.
А её при изменении всё равно надо проверять целиком, хоть в IBE, хоть в ISQL.

Сначала он затрахается переносить текст процедуры в код Дельфи, а потом будет трахаться при переносе этой процедуры в текстовый файл.
При этом, сюрприз, свойство SQL практически у всех компонент это TStrings, у которого, в свою очередь, есть методы LoadFromFile/SaveToFile.
...
Рейтинг: 0 / 0
11.12.2020, 16:05
    #40026909
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
kdv,

не совсем понятно, для чего текст ХП в "компоненты" пхать.

Для создании/обновлении структуры FB есть замечательная IBEScript.dll.
...
Рейтинг: 0 / 0
11.12.2020, 16:10
    #40026914
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
ъъъъъ,

есть такой бзик у писателей программ, что "базу данных надо создавать из приложения". Нафиг это надо, почему нельзя болванку БД таскать вместе с exe - науке это неизвестно. А геморрой он как энтропия, сиречь бесполезность рассеивания энергии и увеличения хаоса.
...
Рейтинг: 0 / 0
11.12.2020, 16:15
    #40026915
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
ъъъъъ
А вот в Delphi были бы raw - строки 21995460 - этой хуёни бы не обсуждали.

Вот как раз эту, весьма специфическую, фуету и не нужно тащить в язык общего назначения. Сделали вам мультипаст - пользуйтесь. Не нравится, сделайте себе визуальный стринглист и храните свои текстовые портянки там.
...
Рейтинг: 0 / 0
11.12.2020, 16:21
    #40026920
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Kazantsev Alexey
ъъъъъ
А вот в Delphi были бы raw - строки 21995460 - этой хуёни бы не обсуждали.

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


Не нравится - сделай себе визуальный стринглист, нравится - используй "специфическую фуету".
В C++ (например) можно и так, и сяк.
...
Рейтинг: 0 / 0
11.12.2020, 16:24
    #40026926
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
11.12.2020 16:15, Kazantsev Alexey пишет:
> сделайте себе визуальный стринглист и храните свои текстовые портянки там.

оно всё одно будет в ресурсе лежать.
так нахрена ещё и посредник в лице визуального компонента,
который для решения основной задачи не используется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.12.2020, 16:30
    #40026928
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
ъъъъъ
нравится - используй "специфическую фуету"

Проблема в том, что потом этот код кому то поддерживать придётся...
ъъъъъ
В C++ (например) можно и так, и сяк.

У этих извращенцев ещё и скобки вместо begin/end, тоже мне пример для подражания...
Мимопроходящий
так нахрена ещё и посредник в лице визуального компонента

Удобнее искать, открывать и редактировать чем файл в ресурсах.
...
Рейтинг: 0 / 0
11.12.2020, 16:51
    #40026939
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Вас надо скормить нашим ИБшникам
Они вам расскажут про дбо-права, как правильно Родину любить и нужны ли разрабы на проде даже для чтения
...
Рейтинг: 0 / 0
11.12.2020, 17:38
    #40026972
Fr0sT-Brutal
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скопировать текст скрипта firebird в delphi
Пипл, ТС же сказал, что осознает кривость, но это не его решение. Чего копья ломать.
Если нужно на постоянку, то в GExperts / cnPack должны быть такие средства

Кстати, можно еще один вариант: в нужном юните сделать {$I 'query.inc'} и добавить скрипт/программку в Build events > Pre-build, которая будет из sql файла перегонять в query.inc. Или, в зависимости от требований, вставлять непосредственно в нужный юнит, главная идея - в Pre-build команде
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как скопировать текст скрипта firebird в delphi / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]