![]() |
Steuerzeichen - Rechteck in Strings
Hallöle,
ihr kennt ja sicherlich dieses komische Steuerzeichen, was in den String's z.B. Zeilenumbruch o.ä. darstellt. Bei mir erscheinen die in einer Listbox z.B. als kleines gefülltest Rechteck innerhalb von SQL-Strings, die ich z.B. folgendermaßen zusammensetze:
Delphi-Quellcode:
Das problem tritt halt nicht nur in der Listbox auf, sondern auch in anderen Kompo's, z.B. MemoBoxen. Da nur ist es ein normales, ungefülltes Quadrat.
Query.SQL.Text := 'SELECT ';
for i := 0 to Listbox.Count - 1 do begin if Listbox.Checked[i] = cbChecked then Query.SQL.Add( Listbox.Items.Strings[i] ); if i < Listbox.Count - 1 then if (Listbox.Checked[i + 1] = cbChecked) AND (Listbox.Checked[i] = cbChecked) then Query.SQL.Add(', '); end; Tja, jedenfalls möcht ich das jetzt weghaben, weil das nicht unbedingt schön aussieht, nur weiss ich goarnicht wo's herkommt, oder wie das genau genannt wird. Jemand ne Idee? Danke tyler |
Re: Steuerzeichen - Rechteck in Strings
Moin!
Query.SQL ist eine Property des Typs TStrings und da du dort die Strings alle in eine eigene Zeile einfügst mit Add, werden diese einzelnen mit einem CR/LF verbunden, wenn du mit Query.SQL.Text dir den Inhalt rausholst. Wenn du nun aber diese auch einfach der ListBox.Items.Text zuweist, dann solltest du diese Zeichen nicht mehr sehen und statt dessen deinen Query genauso zeilenweise aufgedröselt wie du ihn erstellst in der Schleife. Ansonsten wüsste ich nicht, woher diese Kästchen kommen sollten. MfG Muetze1 |
Re: Steuerzeichen - Rechteck in Strings
Hallo!
Danke für deine Antwort erstmal. Ich versteh soweit was du meinst: Das Problem ist, ich muss versuchen das "Sql.Add" zu umgehen. Nur taucht dieses Steuerzeichen wohl bei allen SQL-Strings auf, auch wenn ich nur ein Simples "SQL.Text := 'SELECT * FROM table" an meine Memo etc übergebe, gibt es dieses Steuerzeichen. Gut, die einzige Lösung wär halt für mich, den String einfach um ein Zeichen kürzen, das wäre ja dann das Steuerzeichen. Das ist nur sehr aufwendig wenn ich an meine FOR-TO-Schleifen mit dem SQL.Add denke. tyler |
Re: Steuerzeichen - Rechteck in Strings
Moin!
Zitat:
1.
Delphi-Quellcode:
2.
Memo1.Lines.Text := Query1.SQL.Text
Delphi-Quellcode:
3.
Memo1.Lines := Query1.SQL;
Delphi-Quellcode:
Such dir eine von den 3 Möglichkeiten aus und nutze sie - es gibt keine komischen Zeichen...
Memo1.Lines.Assign(Query1.SQL);
MfG Muetze1 |
Re: Steuerzeichen - Rechteck in Strings
supi, funzt tatsächlich so wie du es sagst! Hab ich gestern Nacht wohl ein wenig auf dem Schlauch gestanden *g*
Danke! tyler |
Re: Steuerzeichen - Rechteck in Strings
tja, da gibt es nur leider zwei Probleme:
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 ;) 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. 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 :( Folgendes: □□ befindet sich immer noch am Ende der Zeile. Die Zeilenumbrüche zwischen den einzelnen Feldangaben, die aus dem "SQL.Add" (siehe meine FOR-To-Schleife oben) herrühren, sind aber weg. Im Klartext: mit StringReplace: SELECT id, name, vorname, email, telefon, password, level FROM access.access □□ ohne StringReplace: SELECT id □□, name □□, vorname □□, email □□, telefon □□, password □□, level □□ FROM access.access □□ |
Re: Steuerzeichen - Rechteck in Strings
Moin!
Zitat:
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:
Delphi-Quellcode:
Memo1.Lines.AddStrings(Query1.SQL);
Zitat:
MfG Muetze1 |
Re: Steuerzeichen - Rechteck in Strings
Wow, jetzt funktionierts wirklich. Ich benutze die Methode "AddStrings" und natürlich vorher die ReplaceString-Funktion.
Die SQL-Query erst in einem String zusammen zu setzen und dann an die Query zu geben, hatte ich mir auch schon überlegt, ich bin aber allgemein mit den Variabeln etwas geizig ^^ Danke für deine Geduld! :) tyler |
Re: Steuerzeichen - Rechteck in Strings
Moin!
Zitat:
Zitat:
Ich würde lieber nicht am falschen Ende sparen... MfG Muetze1 |
Re: Steuerzeichen - Rechteck in Strings
okay, ich werd deinen Rat befolgen. Am Ende gewinnt der Quellcode ja auch noch an Übersichtlichkeit, ist also auf jedenfall der bessere Weg :)
ki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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