Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Steuerzeichen - Rechteck in Strings

  Alt 9. Jan 2005, 15:18
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
  Mit Zitat antworten Zitat