PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Memoinhalte in Varis speichern



Miaaa
08.02.2004, 15:44
Tach. Ich weiß, ich bin schrecklich, aber ich hab mal wieder ein Prob.: Wie der Betreff schon sagt, weiß ich nicht, wie ich bei Delphi die Inhalte eines Texteingabefeldes in eine Vari bekommen kann. Wenn ich z.B. einen String nehme, sagt Delphi bei einem Memo: 'Inkompatible Typen: String und TStrings!'
Wenn miaaa irgentjemand einen Tipp geben kann... (Es ist mir wirklich EGAL, was für eine Texteingabe-Komponente dafür gebraucht wird, TMemo, TEdit, TRichEdit... alles 'erlaubt' :) )
Thanke im Voraus!

Ineluki
08.02.2004, 20:32
ich enpfehle dir eine TStringList
TStrings ist ein verallgemeinerter Stringlistentyp .. das heisst, da stehen viele Strings drinn in vielen Zeilen angeprdnet ...

die sache sieht dann in etwa so aus ...



Procedure TForm1.Button1Click(Sender:TObject);
var myList:TStringList;
begin
myList:=TStringList.create; //Neues Object von TStringList erzeugen
myList.AddStrings(Memo1.Lines); //Daten uebertragen
//tu was immer du willst hier
myList.free; //Speicher des Objects wieder freigeben !!Wichtig!!
end;


Aber wofuer willst du eine Stringlist in deine eigenen Variablen speichern ? ... meistens braucht man das nicht ...

wenn du aber meinst, wie du auf die einzelnen Strings zugreifen kannst ... das geht folgendermassen ....

ein Object vom Typ TStrings hat zwei wichtige Eigenschaften ...
TStrings.Count gibt die Anzahl von Strings wieder, die darin gespeichert ist.
TStrings.Strings ist das Array der gespeicherten Strings. Dabei wird von 0 bis Count-1 indexiert.



Procedure TForm1.Button2Click(Sender:TObject);
var i:integer;
s:String;
begin
for i:=0 to Memo1.Lines.Count-1 do
begin
s:=Memo1.Lines.Strings[i]; // s:=Memo1.Lines[i]; waere genau so richtig .. ist eine Abkuerzung
//hier den String verarbeiten
Memo1.Lines.Strings[i]:=s; // und gegebenenfalls zurueckschreiben
end;
end;


Wenn du nur einen einzeiligen Text hast, ist es oft aber bequemer einen TEdit komponente zu nehmen ...

Den Text kannst du dann mit der eigenschaft TEdit.Text ansprechen ...


Procedure TForm1.Button3Click(Sender:TObject);
var s:String;
begin
s:=Edit1.Text; //String holen ..
// String verarbeiten
Edit1.Text:=s; //String veraendert zurueckspeichern ?
end;


mehr gibts da eigentlich nicht zu sagen ^^

Miaaa
09.02.2004, 14:06
So wie dein drittes Beispiel hab ichs gemeint. (Bis jetzt wusste ich aber nicht, dass es '.Text' gibt, sondernhab es immer mit '.Lines' versucht. Und s:=Memo1.Lines; will er nich'.)
Thanke