Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Innere Struktur von TStrings / TMemo

  Alt 27. Mär 2015, 13:30
Delphi-Version: 7
Hallo zusammen,
es ist Freitag und vllt. Zeit für eine Frage neben dem täglichen Stress.
In der letzten Woche bin ich über einen der nicht auszurottenden Fehler gestoßen, eine Vis. Komponente als Datenspeicher mißbrauchen. Und zwar war folgendes:

Delphi-Quellcode:
procedure procc(const l1:tstrings);
var
  ll : tstrings;
begin
  ll:=tstringlist.Create;
  {fülle ll}
  for i:=0 to ll.count-1 do
    if pos('irgendwas',ll[i])>0 then l1.add(ll[i]); {!BP!}
  ll.free;
end;
Ist natürlich nicht der Originalcode, aber es reicht.

Irgendwo im programm gab es dann ein procc(memo1.lines); und ein for i:=0 to l2.count-1 do .. wobei l2 natürlich auch einen Bezug zu Memo1.Lines hat. Hier waren die Ergebnisse nun überhaupt nicht so wie ich es erwartet hatte, mit ein wenig Debuggerbenutzung bin ich dann auf folgendes gestoßen:

nach BP habe ich folgende Dateninhalte:

ll[0] = 'ganz schön langer string mehr als 255 Zeichen'
ll[1] = 'ganz schön langer string1 mehr als 255 Zeichen'
ll.Text = 'ganz schön langer string mehr als 255 Zeichen'x0Dx0A'ganz schön langer string1 mehr als 255 Zeichen'x0Dx0A

l1.Text = 'ganz schön langer string mehr als 255 Zeichen'x0Dx0A'ganz schön langer string1 mehr als 255 Zeichen'x0Dx0A
l1[0] = 'ganz schön langer'
l1[1] = 'string mit mehr als'
l1[2] = '255 Zeichen'
l1[3] = 'ganz schön langer' ... usw

Klar ist mir daß der "Zeilenumbruch" der Darstellung des TMemo geschuldet ist, doch müßte es doch dann korrekter Weise auch in .Text zu finden sein:
Code:
'ganz schön langer'x0Dx0A'string mit mehr als'x0Dx0A'255 Zeichen'
und eben das ist nicht der Fall.

habt Ihr dafür eine schlüssige Erklärung?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat