Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Quelltext in String konvertieren (https://www.delphipraxis.net/200570-quelltext-string-konvertieren.html)

Codehunter 3. Mai 2019 07:12

Quelltext in String konvertieren
 
Hallo,

Ich habe oft den Fall, dass ich längere mehrzeilige SQL-Queries als String brauche. Entsprechende Einfüge-Funktionen gibts in MMX, CnPack und GExperts, nur dummerweise bei keinem so wie ich es bräuchte. Ein Beispiel:
Code:
SELECT T1.A AS NAME_1,
       T2.A AS NAME_2,
       T2.B AS NAME_3
FROM MY_TABLE_1 AS T1
LEFT JOIN MY_TABLE_2 AS T2
  ON T1.KEYFIELD=T2.KEYFIELD
WHERE T2.C=:MY_PARAM_1
ORDER BY T2.B;
Daraus sollte werden:
Delphi-Quellcode:
'SELECT T1.A AS NAME_1, ' +
       'T2.A AS NAME_2, ' +
       'T2.B AS NAME_3 ' +
'FROM MY_TABLE_1 AS T1 ' +
'LEFT JOIN MY_TABLE_2 AS T2 ' +
  'ON T1.KEYFIELD=T2.KEYFIELD ' +
'WHERE T2.C=:MY_PARAM_1 ' +
'ORDER BY T2.B;';
Für sowas wäre es ideal, wenn Delphi HereDoc unterstützen würde anstatt dass man solche Klimmzüge machen muss. In meinem Fall scheidet auch die sauberere Lösung mit den Resourcenstrings aus, weil ich die Queries dynamisch zusammenbauen muss. Am nächsten dran ist für meinen Bedarf noch GExperts. Allerdings muss ich hier dann noch einen zweiten Schritt gehen und alle "'," in "' +" ersetzen. CnPack und MMX konvertieren jeweils noch die Zeilenumbrüche in "#13#10", was ja hier im Fall von SQL völlig unnötig ist.

Insgesamt halt ein bissl mühselig bei langen Queries. Der oben gezeigte ist ja noch winzig im Vergleich...

Grüße
Cody

TigerLilly 3. Mai 2019 07:17

AW: Quelltext in String konvertieren
 
Dir geht es um die Einrückung?

hoika 3. Mai 2019 07:21

AW: Quelltext in String konvertieren
 
Hallo,
Zitat:

Zeilenumbrüche in "#13#10", was ja hier im Fall von SQL völlig unnötig ist
Unnötig vielleicht, aber beim DBMonitor leichter lesbar.

Codehunter 3. Mai 2019 07:28

AW: Quelltext in String konvertieren
 
Zitat:

Zitat von hoika (Beitrag 1431473)
Hallo,
Zitat:

Zeilenumbrüche in "#13#10", was ja hier im Fall von SQL völlig unnötig ist
Unnötig vielleicht, aber beim DBMonitor leichter lesbar.

Haste schon recht. Allerdings in meinem Fall nicht so kritisch. Die Queries werden vorher in einem SQL-Client entwickelt und von dort kommen auch die Umbrüche und Einrückungen. Wird also erst nach Delphi kopiert wenns fertig ist.
Zitat:

Zitat von TigerLilly (Beitrag 1431472)
Dir geht es um die Einrückung?

Auch. In den meisten Fällen konvertieren die Plugins die vorangestellten Spaces in den String. Ist kein Drama, damit könnte ich ja noch leben. Mehr stört mich der Zeilenumbruch nach #13#10 am Ende. Wegens der Lesbarkeit in der Delphi-Unit.

Sherlock 3. Mai 2019 07:36

AW: Quelltext in String konvertieren
 
Ups, hab mich komplett vertan.

Sorry, kann gelöscht werden.

jottkaerr 3. Mai 2019 07:59

AW: Quelltext in String konvertieren
 
Du könntest mit Suchen&Ersetzen arbeiten. Markiere den Text, rufe den Suchen&Ersetzen-Dialog auf, verwende
Code:
^{ *}{[^ ].*}$
als Suchmuster und
Code:
\0'\1 ' +
als Ersetzungstext. Bei den Optionen des Dialogs muss "Reguläre Ausdrücke" aktiviert sein. Nach dem Ausführen mit "Alles ersetzen" musst Du nur noch in der letzten Zeile (an deren Ende der Cursor positioniert wird) das Plus durch ein Semikolon ersetzen.

Falls sich jemand wundern sollte, wieso das eigentlich überflüssige "[^ ]" im zweiten Klammernpaar steht: der eigentlich äquivalente Suchausdruck
Code:
^{ *}{.*}$
hat bei Leerzeilen abgebrochen. Fragt mich nicht wieso ...

p80286 3. Mai 2019 08:12

AW: Quelltext in String konvertieren
 
Zitat:

Zitat von Codehunter (Beitrag 1431471)
In meinem Fall scheidet auch die sauberere Lösung mit den Resourcenstrings aus, weil ich die Queries dynamisch zusammenbauen muss. Am nächsten dran ist für meinen Bedarf noch GExperts. Allerdings muss ich hier dann noch einen zweiten Schritt gehen und alle "'," in "' +" ersetzen. CnPack und MMX konvertieren jeweils noch die Zeilenumbrüche in "#13#10", was ja hier im Fall von SQL völlig unnötig ist.

Wahrscheinlich verstehe ich Dein Problem nicht richtig, denn es sollte für Dich doch kein Problem sein eine Importfunktion zu bauen die den SQL-Text in "'" einrahmt. Strings in SQL natürlich in "''" einpacken. Damit solltest Du doch eigentlich die meiste Arbeit erledigt haben?

Gruß
K-H

Codehunter 3. Mai 2019 08:29

AW: Quelltext in String konvertieren
 
Zitat:

Zitat von jottkaerr (Beitrag 1431480)
Du könntest mit Suchen&Ersetzen arbeiten.

Interessante Idee! Nur wenn ich das genau so versuche wie beschrieben, sagt Delphi lediglich, dass keine Entsprechungen gefunden werden.

Zitat:

Zitat von p80286 (Beitrag 1431481)
Wahrscheinlich verstehe ich Dein Problem nicht richtig, denn es sollte für Dich doch kein Problem sein eine Importfunktion zu bauen die den SQL-Text in "'" einrahmt.

Ich hatte eigentlich nicht vor, wegen diesem "Sekundärproblemchen" in die IDE-Plugin-Entwicklung einzusteigen ^^ Du gehst vmtl. irrtümlich davon aus, dass ich den SQL-Query in ein eigenes Programm importieren und formatieren will. Ich red aber von der Delphi-IDE. Wobei mich das auf die Idee bringt, ein kleines Tool zu machen das einfach in der TNA rumliegt und auf einen globalen Shortut lauscht und bei Bedarf im Clipboard arbeitet.

Uwe Raabe 3. Mai 2019 08:53

AW: Quelltext in String konvertieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die IDE hat im Menü "Bearbeiten" einen Eintrag "Mehrfach einfügen". Dieses Multipaste macht mit den richtigen Einstellungen ziemlich genau was du willst:

dummzeuch 3. Mai 2019 09:02

AW: Quelltext in String konvertieren
 
Ich weiss, Du hast GExperts schon erwähnt. Aber kennst Du den Editor-Experten "Convert Strings"?

OK, ich sehe gerade, es gibt keine Möglichkeit, dabei die Zeilenumbrüche wegzulassen. Wäre vielleicht eine Erweiterungsidee und gar nicht so kompliziert umzusetzen.

Done.

https://blog.dummzeuch.de/wp-content...rt-Strings.png

Es gibt natürlich davon noch kein Release, aber Du kannst Dir ja einfach eine neue DLL backen. How to compile GExperts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz