Autor Beitrag
McFarlane
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68

WIN XP Prof.
Delphi 2005 PE, Turbo Delphi 2006, PHP (Eclipse)
BeitragVerfasst: Di 23.10.07 19:42 
Moin,
ich hab ne Klasse erstellt die in ner Prozedur ein TStrings übergeben bekommen muss.
ausblenden Delphi-Quelltext
1:
2:
//So in etwa:
TDings.procedure(strings: TStrings);


Geht das überhaupt? Weil ich muss doch eigentlich das TStrings Objekt erst createn, oder?

Ich kann leider nicht mit Quelltext dienen, weil ich den erst schreibe, wenn ich weiß dass das so geht. Wär nämlich verdammt viel.

Ich versuch mal zu erklären was ich machen will:
Ich wandele in der Protzedur mehrzeiligen Text um, sprich ich muss irgendwie erkennen können, wieviele Zeilen er hat.
Beim Memo kann man das ja so ganz gut auslesen.

Oder gibts da nich ne bessere Variante?
Thx, McFarlane

_________________
21 ist nur die halbe Wahrheit...
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Di 23.10.07 21:13 
Zitat:
Geht das überhaupt?

Warum nicht?
Zitat:
Weil ich muss doch eigentlich das TStrings Objekt erst createn, oder?
Ja, aber in der rufenden Prozedur.

_________________
Markus Kinzler.
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mi 24.10.07 08:57 
Zitat:
Geht das überhaupt?

Um da mal etwas mehr ins Detail zu gehen. Du kannst so ziemlich alles an eine Procedur übergeben. Ist immer nur die Frage ob es Sinn macht oder nicht. Aber ein TStrings ist eine Klasse wie jede andere und die kannst du natürlich überall hin übergeben.

Deine Strings solltest du nur dort erstellen wo du sie brauchst um unnötigen balast zu vermeiden. Allerdings eine kleine Anmerkung zu TStrings. TStrings ist normal nur die Klasse die überall hin weiter gereicht wird. Aber unten drunter wird TStringList benutzt. Denn die TStringList implementiert erst die funktionalität um Texte zu verwalten. Mit anderen Worten du solltest eine TStringList erstellen und diese an Methoden, die ein TStrings erwarten, reichen. Funktioniert so problemlos. Das aber nur als Anmerkung, da du die ganze Zeit von TStrings sprichst.

Alternativen. Wenn du mit wirklich großen Texten arbeitest oder diese Stelle sehr zeitkritisch ist dann könntest du auch per Hand durch den Text gehen und die Zeilenumbrüche zählen, da eine StringListe den Text kopieren muss. Was Zeit und etwas Speicher kostet. Allerdings erfordert das manuelle Zählen auch ein wenig mehr Erfahrung. Ein wenig. Ansonsten kannst du das durchaus so machen.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
McFarlane Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 68

WIN XP Prof.
Delphi 2005 PE, Turbo Delphi 2006, PHP (Eclipse)
BeitragVerfasst: Fr 26.10.07 22:27 
Joa, danke für die Antworten.
Hab TStrings genommen, aber werd die jetzt mal auf TStringList umstellen.
Kurze Frage am Rande:
Fals jemand von euch die wunderbare PHPFunktion br2nl() kennt, gibts sowas auch in delphi?
Bzw. ist sowas wie \n in Delphi vorhanden?

_________________
21 ist nur die halbe Wahrheit...
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 26.10.07 23:19 
Moin!

Bitte erstelle für deine "Randfrage" ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt. Danke ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.