![]() |
Mehrzeiligen Text zuweisen incl. '
In C# gibt es die Möglichkeit, mehrzeiligen Text so zuzuweisen
Code:
Diese Zuweisung hat den Vorteil, dass ich den kompletten Textblock kopieren und 1:1 im MsSQL-Manager testen kann
this.AddCmd(@"
if not exists(select * from information_schema.tables where table_name = 'Tabelle1') begin create table Tabelle1 (ID int not null Identity (1,1), Datum Datetime, Result varchar(15), Info varchar(50) null) on [primary] end "); In Delphi kenn ich nur so was
Delphi-Quellcode:
Entsprechend mühsam ist es den eigentlich relevanten SQL-Text (der auch umfangreicher sein kann) im SQL-Manager zu testen. Zumal auch die doppelten ''Tabelle1'' bei Strings geändert werden müssen.
quQuery.SQL.Text := 'if not exists(select * from information_schema.tables where table_name = ''Tabelle1'')';
quQuery.SQL.Add('begin'); quQuery.SQL.Add(' create table Tabelle1'); quQuery.SQL.Add(' (ID int not null Identity (1,1),'); quQuery.SQL.Add(' Datum Datetime,'); quQuery.SQL.Add(' Result varchar(15),'); quQuery.SQL.Add(' Info varchar(50) null)'); quQuery.SQL.Add(' on [primary]'); quQuery.SQL.Add('end'); Hat jemand eine Idee, wie ich den Text ähnlich wie bei C# als ein Block zuweisen kann? Direkt im quQuery-Editor kann ich es nicht zuweisen, da es viele solcher SQL's hintereinander geben kann. Vielen Dank im Voraus |
AW: Mehrzeiligen Text zuweisen incl. '
Mehrzeilige String-Konstanten gibt es in Delphi leider nicht.
|
AW: Mehrzeiligen Text zuweisen incl. '
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...:P
eine andere Möglichkeit wäre das speichern der SQL außerhalb vom QT...in Ressourcen. ![]() Tool: PS: Ich liebe es. :drunken: ![]() Vorteile: * Das SQL ist eine Datei, die im bevorzugten Editor testbar ist. :thumb: (Parameter müßten ggf. werttechnisch ergänzt werden :wink:) * Alle SQL an einem Platz im Dateisystem und nicht über den QT oder DPR verteilt. QT:
Delphi-Quellcode:
function TDatabaseBase.GetSQLByName(SQLName: string): string;
var SQLStream: TResourceStream; SQLStrings: TStringList; SQLStringsDecrypt: TStringList; begin Result := ''; SQLStrings := TStringList.Create; try SQLStringsDecrypt := TStringList.Create; try SQLStream := TResourceStream.Create(HInstance, SQLName, PWideChar(conDatabaseResourceGroupString)); // MSSQL2012 z.B. entsprechend des Ressourcennamens den du vergeben hast try try SQLStrings.LoadFromStream(SQLStream); SQLStringsDecrypt.Text := TToolsCrypt.Decrypt(SQLStrings.Text, conKey); // nur bei verschlüsseltem SQL nötig Result := SQLStringsDecrypt.Text; except Result := ''; end; finally SQLStream.Free; end; finally SQLStringsDecrypt.Free; end; finally SQLStrings.Free; end; end; ... procedure TDatabase.FillList(List: TBlubbFieldList; TableName: string); var I: Integer; Qry: TFDQuery; Field: TBlubbField; begin Qry := CreateQuery; try Qry.SQL.Text := Format(GetSQLByName('TABLE_FIELDLIST'), [TableName]); Qry.Open; if not Qry.Eof then begin List.Clear; for I := 0 to Qry.Fields.Count - 1 do begin Field := TBlubbField.Create; Field.FieldIndex := I; Field.FieldName := Qry.Fields[I].FieldName; Field.Fieldype := Qry.Fields[I].DataType; List.Add(Field); end; end; finally Qry.Free; end; end; |
AW: Mehrzeiligen Text zuweisen incl. '
Gerade hatte ich geschrieben:
Das habe ich befürchtet. Ich hatte gehofft, es gibt irgendeinen Trick. Ich könnte es aus einen Textfile auslesen, aber das wäre bei den Kunden verpönt. Das gilt natürlich auch für html. Es wäre vom Kunden änderbar |
AW: Mehrzeiligen Text zuweisen incl. '
Dann wäre haentschmans Ressourcenlösung genau das richtige für Dich
|
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
|
AW: Mehrzeiligen Text zuweisen incl. '
OK, zu schnell geantwortet. Ich hatte nicht bedacht, dass Ressourcen ja kompiliert sind. Damit wäre es eine Option.
|
AW: Mehrzeiligen Text zuweisen incl. '
Delphi-Quellcode:
Sowas wäre vielleicht noch am wenigsten schmerzhaft, man kann die überflüssigen
'create table Tabelle1 '//
+'(ID int not null Identity (1,1), '// +'Datum Datetime, '// +'Result varchar(15), '// +'Info varchar(50) null) '// +'on [primary] '// +' und '// leichter finden und rauslöschen. |
AW: Mehrzeiligen Text zuweisen incl. '
Tool schreiben:
Ein Memo, in das Du das getestete SQL per Copy&Paste reinpappst. Zweites Memo für die Ausgabe. Ein Edit für den Namen der Query im Quelltext. Eine Button für 'ne Routine (sinngemäß) dieser Art:
Delphi-Quellcode:
Ergebnis per Copy&Paste an die passende Stelle im Quelltext einfügen.
Memo1.Lines.Clear;
Memo1.PasteFromClipboard; Memo2.Lines.Clear; Memo2.Lines.Add(Format('%s.SQL.Clear;',[edQueryName.Text])); for i := 0 to Memo1.Lines.Count - 1 do Memo2.Lines.Add(Format('%s.SQL.Add(%s);',[edQueryName.Text,QuotedStr(Memo1.Lines[i])])); Memo2.SelectAll; Memo2.CopyToClipboard; Hab' sowas vor Jahren mal für 'nen ähnlichen "Bedarf" in 'ner vollkommen anderen Entwicklungsumgebung benötigt. Hat wunderbar geklappt und sehr viel Schreiberei erspart. |
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
|
AW: Mehrzeiligen Text zuweisen incl. '
Ja und?
Routine umdrehen: Alles bis zum ersten ' weg. Alles bis zum letzten ' weg. Doppelte '' durch ' ersetzen? Macht also genau einen zweiten Button aus.
Delphi-Quellcode:
var
s : String; i : Integer; begin Memo1.Lines.Clear; Memo1.PasteFromClipboard; Memo2.Lines.Clear; for i := 0 to Memo1.Lines.Count - 1 do begin s := Memo1.Lines[i]; s := Copy(s,Pos('''',s) + 1, Length(s); s := ReverseString(s); s := Copy(s,1,Pos('''',s) + 1,Length(s)); s := ReverseString(s); s := AnsiReplaceText(s,'''''',''''); Memo2.Lines.Add(s); end; Memo2.SelectAll; Memo2.CopyToClipboard; end; |
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
Gemäß: Eat your own dogfood ... Mache sowas für SVG. |
AW: Mehrzeiligen Text zuweisen incl. '
Ich müsste mir mal
![]() womöglich gibt es auch Möglichkeiten in der IDE kleine Scripte o.ä. auszuführen, bei Custom Hotkeys ? |
AW: Mehrzeiligen Text zuweisen incl. '
Wie dem auch sei halte ich getrennte Dateien (also z.B. in Ressourcen) für besser. In einer Datei mehrere Sprachen zu mischen ist voll unclean.
|
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
|
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
Delphi-Quellcode:
sind total überflüssig und IMHO auch optisch nervend störend .... braucht eh niemand, wenn man den Editor bedienen richtig kann.
//
Das ist auch nur mehrzeillig im Quellcode, aber NICHT im Text.
Delphi-Quellcode:
Die StringList macht aus dem #10 schon ein #13#10 (sLineBreak), also nicht nötig da mehr zu schreiben.
'create table Tabelle1 '#10
+'(ID int not null Identity (1,1), '#10 +'Datum Datetime, '#10 +'Result varchar(15), '#10 +'Info varchar(50) null) '#10 +'on [primary] '; Und keine Ahnung, warum man sich bei Emba derartig wehement dagegen wehrt einen MultiLine-String in die Syntax einzufügen- |
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
die helfen aber beim Suchen/Ersetzen um eventuell wichtige
Delphi-Quellcode:
zu identifizieren, und nicht aus Versehen zu löschen.
,
Kommt halt immer drauf an was dem TE wichtig ist. |
AW: Mehrzeiligen Text zuweisen incl. '
[QUOTE=himitsu;1473973]
Zitat:
Meine Frage ist aber beantwortet. Ohne Zusatzaufwand ist es nicht möglich. Wenn schon, dann gefällt mir die Lösung mit den Resourcen besser. Im Grunde geht es um das Updaten der DB zwischen verschiedenen Versionen. Da könnte man per Version, die en Update benötig, ein File erstellen |
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
Ich lege in DB-Projekten auch gern mal generelle Sql-Abfragen als *.TXT Files in Unterverzeichnissen ab (man muss nicht unbeding Ressourcen nehmen). Das ist sehr praktisch und Übersichtlich, so kann die Abfrage ohne Compiler optimiert werden, und ich kann den Text auch 1:1 in ein externes SQL-Tool werfen. Man muss natürlich das FileOpen mit einrechnen, für permanente, schnelle Abfragen könnte das zu viel Overhead sein. |
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
|
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
Text->DelphiKonstante und zurück Was aber geht, ist eine Ressource, wo man in der .RC einen mehrzeiligen Text einfügen oder Jenen aus einer TXT-Datei laden kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz