Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memofeld in StringList einlesen? (https://www.delphipraxis.net/109765-memofeld-stringlist-einlesen.html)

Borschti 7. Mär 2008 09:43


Memofeld in StringList einlesen?
 
Hallo,

zur Zeit versuche Ich mich ein wenig mit Memofeldern auseinanderzusetzen, geht eigentlich auch ganz gut vorran ;)

Nur jetzt habe ich ein kleines Problem, also ich versuche, wie die Überschrifft schon sagt, den Inhalt meines Memofeldes in eine StringList einzulesen. Dies geschieht mit einer For-Schleife.

Delphi-Quellcode:
procedure TForm1.ColorButton1Click(Sender: TObject);
var text1: TStringList;
    i: Integer;
begin
text1 := TStringList.Create;

for i := 0 to Memo1.Lines.Count-1 do
 begin
  text1[i] := Memo1.Lines[i];
 end;

{for i := 0 to Text1.count do
 begin
  Memo2.Lines[i] := text1[i];
 end;}

end;
Den auskommentierten Teil bitte erstmal nicht beachten ^^

Also ich bekomme die Fehlermeldung: "Listenindex überschreitet das Maximum(0)".

So wie ich das verstehe ist das Maximum null, aber wieso? Ich habe insgesamt 10 Lines in Memo1.

Vielleicht ist auch irgendwas ziemlich simples schuld an dem Fehler, wie gesagt ist das erste mal das ich mit Memofeldern arbeite ;)

mfg
Alex

chrisw 7. Mär 2008 09:46

Re: Memofeld in StringList einlesen?
 
Delphi-Quellcode:
text1.add(Memo1.Lines[i]);
Es sind ja noch keine Strings in der Liste, nachdem du sie instanzierst. (Create)

DeddyH 7. Mär 2008 09:46

Re: Memofeld in StringList einlesen?
 
Möglichkeit 1:
Delphi-Quellcode:
text1 := TStringList.Create;

for i := 0 to Memo1.Lines.Count-1 do
begin
  text1.Add(Memo1.Lines[i]);
end;
Möglichkeit 2:
Delphi-Quellcode:
text1 := TStringList.Create;
text1.Assign(Memo1.Lines);

Borschti 7. Mär 2008 10:04

Re: Memofeld in StringList einlesen?
 
Danke euch beiden, hatte mir echt fast die Zähne dran ausgebissen ;)

RavenIV 7. Mär 2008 10:26

Re: Memofeld in StringList einlesen?
 
Zitat:

Zitat von Borschti
Danke euch beiden, hatte mir echt fast die Zähne dran ausgebissen ;)

Ein Wenig in der Hilfe geschaut und die Beispiele betrachtet.
Dann in der DP die Suchfunktion benutzt.
Und schon ist das Problem grösstenteils gelöst.

Coole Sache, nicht wahr?

Borschti 7. Mär 2008 11:35

Re: Memofeld in StringList einlesen?
 
Naja ich bins nochmal :lol:

Habe noch ein Problem ;) also es geht darum das ich meinem zweiten Memofeld nur dann die StringList (kommt aus dem ersten Memofeld) übergeben kann wenn es auch die gleiche Anzahl der Lines wie mein erstes Memofeld hat.

Um das anzugleichen benutze ich
Delphi-Quellcode:
Memo2.Lines := Memo1.Lines;
Allerdings glaub Ich das dann der Inhalt der Lines übergeben wird und nicht die Anzahl...hatte es mit Memo1.Lines.Count probiert aber naja wollte wohl nicht so wie ich ;)

Habe auch grade in der Delphihilfe nachgeschaut da hatte sich mein Verdacht eigentlich schon bestätigt, also ich suche etwas womit Ich die Anzahl der Lines des zweiten Memofeldes an die des ersten Memofeldes angleichen kann.

Schonmal danke im Vorraus.

mfg
Alex

s-off 7. Mär 2008 11:43

Re: Memofeld in StringList einlesen?
 
Hallo,

die kannst Du nicht 'einfach so angleichen'.

Da Lines.Count readonly ist, musst Du die schon explizit hinzufügen, bzw. entfernen.

Den Sinn Deines Vorhabens verstehe ich allerdings nicht nicht so ganz. Hilft Dir vielleicht die Text-Eigenschaft weiter? Wenn Du Memo1.Text := Memo2.Text setzt, dann werden logischerweise auch die Anzahl Strings angepasst.

Borschti 7. Mär 2008 11:56

Re: Memofeld in StringList einlesen?
 
Ja das es mit Lines.Count nicht klappt weiß ich, hab ja die Fehlermeldung gelesen ;)

Also Memo2.Text := Memo1.Text geht ja nicht weil dann auch die Textinhalte übernommen werden.

Ich erklär mal wofür ich das brauch, ist vllt einfacher zu verstehen dann.

Also ein Kunde benutzt in einer Tabelle für Artikel das Langtextfeld für verschiedene Infos, hier drückt er aber nach der Eingabe oft die Eingabetaste weil er denkt er würde so in das nächste Feld Springen, also er verwechselt es mit der Tab Taste.
Meine Aufgabe ist nun ein Programm zu schreiben welche die Spalte Langtext in mein erstes Memofeld einliest, dann die überflüssigen Zeilenumbrüche rauswirft und das ergebnis dann im zweiten Memofeld anzeigt.

Hoffe mein Vorhaben wurde ein wenig klarer :D

Meinst du mit explizit hinzufügen oder entfernen, dass ich das im Objektinspektor machen soll?

mfg
Alex

DeddyH 7. Mär 2008 11:58

Re: Memofeld in StringList einlesen?
 
Wieso nimmst Du nicht Assign? Beispiel siehe oben.

Borschti 7. Mär 2008 12:10

Re: Memofeld in StringList einlesen?
 
Hmm Assign würde doch das gleiche machen oder? Also würde doch auch den Textinhalt mit übertragen oder nicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz