Arbeit mit Memo-Fenster..

Für Fragen von Einsteigern und Programmieranfängern...
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 »

Doreen H. hat geschrieben:Noch ne andere frage.. hab gerade mein programm mit dem einlesen und rückwärts ausgeben gemacht.. es wird aucdh gestartet.. aber wenn ich auf den button klicke kommt ne fehlermeldung:

project.. raised exception class 'EConvertError' with massage: " " is an invalid integer !

was is da los???
Das habe ich mit Mecker gemeint.
wenn nicht in allen Zeilen eine Zahl steht, gibt es einen Laufzeitfehler. An der Stelle setzt die Fehlerprüfung ein...

Doreen H. hat geschrieben:also brauch ich ne neue for schleife.. wie soll ich die denn addieren???
Nee. Brauchste nicht. Dafür stehen die drei Punkte in meiner Schleife

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

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

ich hab aber nur die zahlen 1 bis 6 eingegeben.. keine zeichen? oder zählt die Entertaste als Zeichen oder wie?

ja wenn ich keine schleife brauche.. dann kommt da s:= j1 +j2 +j3! .. ja das klingt behindert.. aber ich weiß mir gerade nicht anders zu helfen!

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 »

Ich krieg dafür mit Sicherheit wieder verbale Schläge, aber ich bin ein Berufshelfer:

Code: Alles auswählen

var i,j, s: Integer;
...
for i:=0 to Memo1.Lines.Count do begin
  j:=StrToInt(Memo1.Lines[i];
  s:=s+j;
end;
Memo2.Lines.Add(IntToStr(s));  // für die Summe aller Elemente

Der Laufzeitfehler entsteht durch das "Enter" nach der letzten Zahl. Damit hast Du eine neue Zeile, in der nichts bzw das gefürchtete "" steht. Wenn Du also nach der letzten Zahl auf die Enter-Taste verzichtest, sollte es klappen.

IntToStr funktioniert nur mit Ganzzahlen. Ergebnise von Divisionen oder Wurzelziehen sind aber genau wie Stings oder das gefürchtete "" selten Ganzzahlen. Du solltest Dich also nach einer Funktion umsehen, die gebrochene Zahlen in Strings umwandelt, falls Du mit diesen Funktionen arbeiten möchtest.

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

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

also ich habs nochmal probiert.. ohne enter nach der letzten zahl.. gleiche Fehlermeldung!! :(

ja dann muss ich mit StrToFloat oder eben umgekehrt arbeiten.. für gebrochene zahlen.. also ich hab jetzt die summe..
und den durchschnitt?.. muss ich da einfach durch j teilen?? also sprich durch die anzahl der eingegeben zahlen? Ich find das gerade unmöglich.. uns so ne aufgabe zu geben.. ohne dass man weiß, wie die rechenoperationen in memo-fenstern funktionieren! ;/

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 »

Die Fehlermeldung sollte eigentlich nicht mehr auftauchen.

Und der Durchschnitt hat nichts mit einem Memofeld zu tun. Der wird immer mit Summe / Anzahl berechnet....

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Arbeit mit Memo-Fenster..

Beitrag von shokwave »

Doreen H. hat geschrieben:also ich habs nochmal probiert.. ohne enter nach der letzten zahl.. gleiche Fehlermeldung!! :(
Du könntest auch abfragen, ob die Zeile leer ist, bevor du damit rechnest.

Code: Alles auswählen

if Memo1.Lines[i]<>"" then
Doreen H. hat geschrieben:ja dann muss ich mit StrToFloat oder eben umgekehrt arbeiten.. für gebrochene zahlen.. also ich hab jetzt die summe..
und den durchschnitt?.. muss ich da einfach durch j teilen?? also sprich durch die anzahl der eingegeben zahlen?
Das ist jetzt aber nicht dein Ernst, oder? :shock: j enthält nicht die Anzahl der Werte, sondern irgend einen Wert.
Doreen H. hat geschrieben: Ich find das gerade unmöglich.. uns so ne aufgabe zu geben.. ohne dass man weiß, wie die rechenoperationen in memo-fenstern funktionieren! ;/
Das rechnen hat absolut nichts mit dem Memo zu tun. Aus dem Memo werden nur die Werte gelesen, bzw. hinein geschrieben.
mfg Ingo

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

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

hää?? wie soll das jetzt die lösung für meine fehlermeldung sein?? die kommt doch nachdem ich das gestartet habe.. was soll denn nach dem then hin?? Ich bin kein programmierer!! wie prüfen ob welche zeile leer ist? ein bisschen genauer?? Da gibts keine leeren zeilen!

Wie geht das denn nun mit dem durchschnitt??

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 »

Tut mir Leid, aber ich ziehe mich nun aus diesem Thema zurück...

@Doreen H.:
Es tut mir leid, aber ich sehe nicht das du ernsthaft versuchst zu verstehen was wir dir hier schreiben. (bis zu einem gewissen Grad schon, aber halt nicht genug. Und sag jetzt nicht das du dazu zu Doof bist, das stimmt nicht).

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

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

Teekeks hat geschrieben:Tut mir Leid, aber ich ziehe mich nun aus diesem Thema zurück...

@Doreen H.:
Es tut mir leid, aber ich sehe nicht das du ernsthaft versuchst zu verstehen was wir dir hier schreiben. (bis zu einem gewissen Grad schon, aber halt nicht genug. Und sag jetzt nicht das du dazu zu Doof bist, das stimmt nicht).
ich habe jetzt verstanden, wie einlesen und ausgeben funktionieren.. und auch warum.. aber was nützt einem anfänger wie mir so ne bemerkung über leere zeilen und so! Da versteh ich doch nur bahnhof ohne erklärung, was die zeile mit dem if .. then bedeutet und wie das bei meiner fehlermeldung hilft!

Das mit dem Durchschnitt ist eine ganz andere frage! man muss durch die anzahl der eingelesenen zahlen teilen.. woher soll ich das wissen.. ICH HABE IMMERNOCH KEINE SEITE ZU MEMO_FENSTERN GEFUNDEN!

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: ich habe jetzt verstanden, wie einlesen und ausgeben funktionieren.. und auch warum.. aber was nützt einem anfänger wie mir so ne bemerkung über leere zeilen und so! Da versteh ich doch nur bahnhof ohne erklärung, was die zeile mit dem if .. then bedeutet und wie das bei meiner fehlermeldung hilft!

Code: Alles auswählen

if Memo1.Lines[i]<>"" then
heisst auf Deutsch: "Wenn in Memo1 die Zeile i größer kleiner " "(leer) ist dann.." Damit kannst du prüfen ob in deiner Zeile überhaupt Zeichen stehen.
Doreen H. hat geschrieben:
Das mit dem Durchschnitt ist eine ganz andere frage! man muss durch die anzahl der eingelesenen zahlen teilen.. woher soll ich das wissen.. ICH HABE IMMERNOCH KEINE SEITE ZU MEMO_FENSTERN GEFUNDEN!
Es gibt keine Memo-Fenster, höchstens eine Komponente. Du hast doch deine For-Schleife. In der gehst du ja jede Zeile deines Memos durch, richtig? Also, wenn du jede Zeile ausliest, kennst du doch jedes mal, wenn du eine Zeile ausließt, einen Wert inkrementieren. So hast du dann am Schluss die Anzahl der eingelesenen Zeilen.
Zuletzt geändert von Live am Di 19. Okt 2010, 17:56, insgesamt 1-mal geändert.

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Arbeit mit Memo-Fenster..

Beitrag von shokwave »

Doreen H. hat geschrieben:ich habe jetzt verstanden, wie einlesen und ausgeben funktionieren.. und auch warum.. aber was nützt einem anfänger wie mir so ne bemerkung über leere zeilen und so! Da versteh ich doch nur bahnhof ohne erklärung, was die zeile mit dem if .. then bedeutet und wie das bei meiner fehlermeldung hilft!
Entschuldige, ich bin wohl von falschen Voraussetzungen ausgegangen, da du im ersten Post schreibst, das ihr schon seit letztem Jahr mit Lazarus programmiert. Da bin ich mal von ausgegangen, dass eine einfache if-Abfrage kein Neuland mehr ist.
Die Erklärung zu meiner Zeile wäre so: Wenn die Bedingung zwischen if und then wahr ist, wird die darauf folgende Code-Zeile ausgeführt. Sollen mehrer Zeilen ausgeführt werden, dann müssen sie in ein begin ... end; gekapselt werden.
Die Bedingung in meiner war: Zeile i aus Memo1 ist kein leere String ("").
Doreen H. hat geschrieben:Das mit dem Durchschnitt ist eine ganz andere frage! man muss durch die anzahl der eingelesenen zahlen teilen.. woher soll ich das wissen..
Mathe?!
Doreen H. hat geschrieben:ICH HABE IMMERNOCH KEINE SEITE ZU MEMO_FENSTERN GEFUNDEN!
Wenn du daraus lesen und hinein schreiben kannst, reicht das doch.
mfg Ingo

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

Re: Arbeit mit Memo-Fenster..

Beitrag von Doreen H. »

Es gibt keine Memo-Fenster, höchstens eine Komponente. Du hast doch deine For-Schleife. In der gehst du ja jede Zeile deines Memos durch, richtig? Also, wenn du jede Zeile ausliest, kennst du doch jedes mal, wenn du eine Zeile ausließt, einen Wert inkrementieren. So hast du dann am Schluss die Anzahl der eingelesenen Zeilen.
was ist inkrementieren?? soll ich jetzt ne neue variable nehmen und bei jedem durchlauf der for schleife +1 rechnen lassen? anders kann ich mir gerade nicht helfen! also zb. vorher sagen d:= 0 und in der schleife d:=d+1 .. um dann die anzahl der eingelesenen werte zu bekommen?

Ich weiß, wie if und then funktionieren.. aus einfachen programmen.. aber die abfrage ob eine Zeile leer ist war mir bisher nicht bekannt!

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:
Es gibt keine Memo-Fenster, höchstens eine Komponente. Du hast doch deine For-Schleife. In der gehst du ja jede Zeile deines Memos durch, richtig? Also, wenn du jede Zeile ausliest, kennst du doch jedes mal, wenn du eine Zeile ausließt, einen Wert inkrementieren. So hast du dann am Schluss die Anzahl der eingelesenen Zeilen.
was ist inkrementieren?? soll ich jetzt ne neue variable nehmen und bei jedem durchlauf der for schleife +1 rechnen lassen? anders kann ich mir gerade nicht helfen! also zb. vorher sagen d:= 0 und in der schleife d:=d+1 .. um dann die anzahl der eingelesenen werte zu bekommen?

Ich weiß, wie if und then funktionieren.. aus einfachen programmen.. aber die abfrage ob eine Zeile leer ist war mir bisher nicht bekannt!
Du hast es erfasst.

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: Arbeit mit Memo-Fenster..

Beitrag von shokwave »

Wenn du wirklich keine Leerzeilen drin hast (die Fehlermeldung besagt aber genau das), dann kannst du mit Memo1.Lines.Count die Anzahl der Zeilen ermitteln.(Wie du es ja schon in der for-Bedingung machst.)

P.S. Hab grad gesehen, dass ich mich oben verschrieben hab. Es müssen einfache Anführungszeichen( ' ' ) für Strings verwendet werden.
mfg Ingo

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 »

Ich hab das Programm gerade mal nachgehäkelt. Eine leere Zeile am Ende wird bei mir sogar toloriert

Antworten