Arbeit mit Memo-Fenster..

Für Fragen von Einsteigern und Programmieranfängern...
Doreen H.
Beiträge: 31
Registriert: Mi 9. Jun 2010, 15:11

Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

Also ich bin blutiger Anfänger.. da ich erst seit letztem Jahr in der Schule mit Lazarus angefangen habe.

Und zwar soll ich folgendes tun:

1. Daten aus Memo-Fenster zeilenweise einlesen un in weiteres Memo-Fenster zeilenweise in umgekehrter Reihenfolge ausgeben!

2. Daten aus Mem0-Fenster zeilenweise einlesen, Summe über alle Elemente berechnen und Durchschnitt berechnen und ausgeben!

3. Daten aus Memo-Fenster zeilenweise einlesen und in weitere Memofenster zeilenweise die dazugehörigen Quadrate/ dritte Potenz ausgeben!

Hmm also den Button für ein Memo-Fenster habe ich bereits gefunden. Ich habe auch ein Arbeitsblatt zu Memo-Fenstern und verschiedene Beispiele. Aber es hängt bei mir schon an dem jeweils ersten Teil der Aufgabe! Wie lese ich Daten aus einem Memo-Fenster ein? Bzw wie gebe ich sie wieder aus in einem anderen Memo-Fenster? Also am besten funktioniert das in Buttons.. aber mir fehlen eben die Befehle für "einlesen" und "ausgeben"! Vielleicht hat jemand eine gute Internetseite, wo es erklärt wird! Wenn ich die Information habe, komme ich hoffentlich allein weiter!

Bitte helft mir auf die Sprünge! :wink:

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Arbeit mit Memo-Fenster..

Beitrag von Teekeks »

Es gibt die Funktion Memo.Lines[index] mit der du die Zeilen auslesen kannst.
Index geht von 0 bis Memo.Lines.count-1 (die erste Zeile hat den Index 0).

Zum durchgehen eignet sich eine for-Schleife.

Um eine Zeile (=string) in eine Zahl(ich vermute mal eine Ganz zahl) umzuwandeln, gibt es die Funktion strtoint().

Ich denke mal das sollte fürs erste reichen.

Zu all dem was ich hier angesprochen habe, solltest du dich noch weiter Belesen.

BTW: Ich schreibe hier absichtlich keinen fertigen Code hin, damit du auch was Lernst und damit wir nicht deine Hausaufgaben machen... :)

Zu guten Seiten: http://www.lazarusforum.de/viewtopic.php?f=21&t=79

Doreen H.
Beiträge: 31
Registriert: Mi 9. Jun 2010, 15:11

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

wie les ich sie denn ein?? Also angenommen ich gebe in mein Fenster die Zahl 3 ein..

Da kommt irgendwann StrToInt.. und was kommt als befehl drum herum? Ich hab doch keine Ahnung. Ich verlange auch keine komplettlösungen.. aber das bringt mich gerade nicht weiter. :!:

und zum auslesen.. angenommen immer noch die Zahl 3 in der ersten Zeile.

Memo2.Lines[0].. dann steht die 3 im zweiten Memofenster.. oder kommt da noch was dahinter? Vllt. IntToStr.. zum Rückumwandeln?

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Arbeit mit Memo-Fenster..

Beitrag von Live »

Doreen H. hat geschrieben:wie les ich sie denn ein?? Also angenommen ich gebe in mein Fenster die Zahl 3 ein..
"add" ist das Stichwort für deine Lines. Jedes Tutorial was Memos in Delphi bzw Lazarus behandelt, hätte dir da geholfen, bzw. die Google Suche.

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Arbeit mit Memo-Fenster..

Beitrag von Teekeks »

Ok, soweit schon ganz gut.

Genau: die Zeile bekommst du mit Memo2.lines[0], aber da man damit nicht Rechnen kann musst du noch Umwandeln.

Die Funktion strtoint() benötigt in der Klammer einen string (in deinem Fall das Memo2.lines[0]) und man bekommt einen Integer raus.

Diesen kannst du einer Variable zuweisen.

(na gut, ich gebe das doch soweit als ein Beispiel, da du das später so oder so noch anpassen musst):

Code: Alles auswählen

var i:integer;
//...
i:=strtoint(Memo2.Lines[0]);
//mach was mit der eingelesenen Zahl in i...
@Live:
Er meinte das Einlesen der Eingabe in den Programcode, also nicht Add, das ist ja zum Ausgeben im Memo ;)

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Arbeit mit Memo-Fenster..

Beitrag von Live »

Teekeks hat geschrieben:@Live:
Er meinte das Einlesen der Eingabe in den Programcode, also nicht Add, das ist ja zum Ausgeben im Memo ;)
Ups *g* naja, das kann er vielleicht auch noch gebrauchen :P

Und ja Doreen, mit der IntToStr() Funktion kannst du eine Integerzahl wieder zu einem String machen.

Doreen H.
Beiträge: 31
Registriert: Mi 9. Jun 2010, 15:11

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

Danke für den anfang! und wenn ich jetzt 10 Zeilen habe.. muss ich dann auch 10 Veriable vereinbaren.. also dann z.B. a..

a:=strtoint(Memo2.Lines[1]; (für die zweite Zeile) oder kann ich für alles i verwenden?

jetzt ist es eigelesen.. und erstmal aufgabe 1: rückwärts ausgeben.. also wenn ich vier Zeilen habe.. muss ich dann schreiben: Memo3.Lines[0]:=StrToInt(i); oder wie ? wenn ja, dann ist das gut..

wenn ich jetzt damit arbeiten will.... also zb. aufgabe 2: summe berechnen.. dann muss ich zb s noch vereinbaren und dann s:=i+k+l+m oder so.. (je nachdem wie die Antwort zu der Frage mit den Variablen lautet) und der durchschnitt ist ja dann durch die anzahl der eingelesenen zahlen.. wie geht das? Also ich will das Programm ja allgemein haben.. da kann ja die anzahl der eingelesenen zahlen immer anders sein!

Ich stell mich wahrscheinlich dumm an..

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Arbeit mit Memo-Fenster..

Beitrag von Live »

Doreen H. hat geschrieben:Danke für den anfang! und wenn ich jetzt 10 Zeilen habe.. muss ich dann auch 10 Veriable vereinbaren.. also dann z.B. a..

a:=strtoint(Memo2.Lines[1]; (für die zweite Zeile) oder kann ich für alles i verwenden?
Teekeks hat bereits geschrieben, dass sich eine For-Schleife am besten eignen würde. Du zählst in der For-Schleife das i hoch bis alle Zeilen ausgelesen sind, denk dabei daran, dass die Schleife immer bei 0 losgeht und bei lines.count-1 zu ende ist.
Mit der Schleife sparst du dir das erstellen von zig Variablen & Quellcode.

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: Arbeit mit Memo-Fenster..

Beitrag von Teekeks »

Um das von Live noch einmal mit andren Worten zu sagen:

Du gehst mit einer For-Schleife dein Memo Zeile für Zeile durch und verarbeitest diese (auf welche weise auch immer).

Viel mehr können wir nicht schriben, da wir sonst ja schon das Ergebniss nennen würden.

Wir können dir aber bei speziellen Fragen evtl. auch noch weiterhelfen :)

lazarus_newbee
Beiträge: 42
Registriert: So 5. Sep 2010, 14:09
OS, Lazarus, FPC: Win7 (L 0.9.28.2 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Erfurt

Re: Arbeit mit Memo-Fenster..

Beitrag von lazarus_newbee »

... und vor allen bist Du damit flexibel und kannst auf verscghiedene Zeilenanzahlen im Memo reagieren.
Für das Rückwärtseinlesen empfehle ich die For-Schleife mit downto...

Um das Programm gegen Fehleingaben im Memo-Feld abzusichern, solltest Du noch über eine Fehlerprüfung nachdenken für den Fall, dass im Memofeld keine Zahlen stehen...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6857
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Arbeit mit Memo-Fenster..

Beitrag von af0815 »

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Doreen H.
Beiträge: 31
Registriert: Mi 9. Jun 2010, 15:11

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

af0815 hat geschrieben:Vielleicht hilft das hier, im Kapitel 5.2.3 sind FOR-Schleifen beschrieben.
Wie eine For Schleife funktioniert weiß ich ja.. nur wie ich sie beim ein und auslesen mit memo fenstern verwende.. keine Ahnung!

Doreen H.
Beiträge: 31
Registriert: Mi 9. Jun 2010, 15:11

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

also jetzt weiter.. ich lese ein mit

for i:=0 to lines.count-1 do
i:=StrToInt(Memo2.Lines) .. oder fehlt jetzt die eckige klammer???

und rückwärts auslesen mit downto.. for i:= lines.count-1 downto 0 do.. Memo3.Lines:=IntToStr... und was in die Klammer???


jetzt hab ich aber das problem.. wenn ich eine for schleife neheme.. wie kann ich mit den Zahlen arbeiten ohne eine einzige variable? wie bei nummer 2 Summe und Durchschnitt bilden und quadrate!

Mir wäre es übrigens lieb, wenn mir einer hilft.. ich komm durcheinander, wenn immer jemand anderes dazwischen schreibt!

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: Arbeit mit Memo-Fenster..

Beitrag von theo »

Doreen H. hat geschrieben: Mir wäre es übrigens lieb, wenn mir einer hilft.. ich komm durcheinander, wenn immer jemand anderes dazwischen schreibt!
Humm, und wer "darf" dir jetzt helfen? Hast du dir einen ausgesucht? ;-)

Doreen H.
Beiträge: 31
Registriert: Mi 9. Jun 2010, 15:11

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

der der angefangen hat.. sich meines schwierigen Falles anzunehmen.. wenn er noch Nerven dafür hat ^^

Antworten