Moin!
Zitat von
Tyler:
Das 1.:
Die Steuerzeichen sind zwar weg, werden aber immer noch Interpretiert, und zwar als "Zeilenumbruch", dass heist in meiner Memo hab ich jetzt für jeden Durchgang der o.g. For-To-Schleife eine Zeile. Das ist natürlich nicht im Sinne des Erfinders
Wie ich dir oben schon geschrieben habe, kommt das daher, das du jeden Teil einzelnd mit Add() hinzufügst - und ein Add() bedeutet eine neue Zeile - und eine neue Zeile wird von einem Zeilenumbruch eingeleitet, sonst wäre es keine neue Zeile...
Wenn du das nicht haben willst, dann musst du das anders programmieren, z.B. so:
Delphi-Quellcode:
Var
lQueryCmd :
String;
// über einen lokalen String zusammen zu bauen geht schneller als ständig Query.SQL.Text zu nehmen...
Begin
...
lQueryCmd := '
';
for i := 0
to Listbox.Count - 1
do
Begin
if Listbox.Checked[i] = cbChecked
then
Begin
If ( Length(lQueryCmd) > 0 )
Then
lQueryCmd := lQueryCmd + '
, ';
lQueryCmd := lQueryCmd + Listbox.Items.Strings[i];
End;
End;
Query.SQL.Text := '
SELECT ' + lQueryCmd;
Zitat von
Tyler:
Das 2.:
Mit den 3 von dir genannten Möglichkeiten, wird der _gesamte_ Inhalt meines Memo's mit dem Inhalt der
Query überschrieben. Ich hab aber 6 Querys deren Text ich nacheinander in die Memo schreiben will. So geht das also auch nicht.
Das wusste ich nicht und ich bin davon ausgegangen, das du den gesamten
Query im Memo haben wolltest. Ansonsten nutze die Methode AddStrings()
Memo1.Lines.AddStrings(Query1.SQL);
Zitat von
Tyler:
Nun hab ich wieder folgendes probiert:
Delphi-Quellcode:
procedure Tf_main.QueryBeforeOpen(DataSet: TDataSet);
begin
Query.SQL.Text := StringReplace(
Query.SQL.Text, #13#10, '
', [rfReplaceAll]);
Memo.Lines.Add(
Query.SQL.Text );
end;
Leider läuft das auch nicht, da die Zeilenumbrüche immer noch angezeigt werden
Was auch logisch ist. Ein von TStrings abgeleitetes Objekt hält intern nicht diesen grossen String sondern die einzelnen Zeilen. Immer wenn du auf die Eigenschaft Text lesend zugreifst, dann wird intern erstmal aus den einzelnen Zeilen mit dem Zeilenumbruch ein grosser String zusammen gebastelt. Wenn du einen String mit Zeilenumbruch der Text Eigenschaft zuweist, dann wird dieser an den Zeilenumbrüchen wieder auseinandergenommen und die einzelnen Zeilen werden zugewiesen. Daher hast du beim Memo.Lines.Add() wieder mindestens ein Zeilenumbruch drinne, da du auf .Text zugreifst.
MfG
Muetze1