Anfänger arbeitet an Vokabeltrainer (Lazarus)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Hey Leute^^

Ich bin ein Anfänger und möchte gerne ein "Vokabeltrainer", ganz einfach, ohne graphische Oberfläche, erstellen.

Ich habe das Ganze jetzt schon auf 2 Beine gestellt, aber ich möchte noch ein paar Verschönerungsideen verwirklichen.

1. Ich möchte ein "Beenden-Botton" einführen.
Das Propgramm schreibt immer eine Vokabel und liest die Eingabe. Wenn diese richtig ist, dann schreibt er "richtig". Ist sie falsch, dann schreibt er "falsch".
Ich möchte an dieser Stelle gerne eine "3. Bedingung" einfügen.. so nach dem Muster:
"If Vokabel=('ENDE') then Programm schließen.
Aber davor sollte er noch den Fehlerzähler, den ich am Ende eingefügt habe, anzeigen.

2. (EDIT) habe ich doch selber hinbekommen^^ :D

Ich schätze, dass ihr noch ein paar Infos braucht, um mir helfen zu können. Wenn das tatsächlich der Fall sein sollte, dann stellt mir bitte Fragen, denn spontan wüsste ich nicht, was ich angeben soll.

Liebe Grüße und vielen Dank im Voraus!

Kia65

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von jaslaz »

Wenn ich das richtig verstanden habe,dann möchtest du einfach nur das Programm schließen lassen!
Wenn ja müsste das so gehn!

Code: Alles auswählen

If Vokabel=('ENDE') then close;

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Hallo,

ich habe jetzt aber 3 Bedingungen:

Code: Alles auswählen

If vokabel=(deutsch[i]) then writeln ('TRUE')
else writeln ('FALSE'), inc (zaehler)
(so ungefähr)

kann ich jetzt noch eine If-Bedingung mitintegrieren??

LG
Zuletzt geändert von Lori am Sa 1. Jan 2011, 19:55, insgesamt 1-mal geändert.
Grund: Highlighter

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Socke »

In einen Else-Block kannst du alles hineinschreiben, auch eine zweite If-Anweisung:

Code: Alles auswählen

if vokabel = 'ENDE' then
begin
  Writeln(Format('Zähler: %d', [zaehler]));
  close;
end
else
if vokabel = (detusch[i]) then
  writeln ('TRUE')
else
begin
  writeln ('FALSE');
  inc (zaehler)
end;
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

jaslaz
Beiträge: 58
Registriert: Sa 28. Aug 2010, 18:30
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von jaslaz »

Sonst geht auch einfach:

Code: Alles auswählen

If Bedingung then ...
else if Bedingung then ...
else Bedingung then ...
Nach dem Chema musst jetzt einfach deine Bedingungen und ... einfügen!

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

EDIT: Ok, ich habe es geschafft^^.. Ich habe einfach dec(zaehler) eingefügt-
Hallo,

Ich bin ein Stückchen weitergekommen, aber das ist so noch nicht ganz richtig. Der schreibt so nämlich zum Schluss noch einmal "False" und zählt ein Fehler. Wie mache ich es geschickt?

Code: Alles auswählen

If vokabel=tuerkisch[a] then writeln ('.::TRUE::.')
 
          else
              begin;
                    writeln ('.::FALSE::.');
                    inc(zaehler);
              end;
          If vokabel=('ENDE') then
             begin
dec(zaehler);
                   writeln ('Abfrage beendet ', zaehler, ' Fehler');
                   readln;
                   exit;
             end;
LG
Zuletzt geändert von Lori am Sa 1. Jan 2011, 19:57, insgesamt 1-mal geändert.
Grund: Highlighter

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Hallo, ich habe noch eine Frage, habe im Net leider nichts gefunden.

If zaehler größer als 1 aber kleiner als 5 schreibe ...

Wie schreibe ich das um?

If zaehler>1<5 geht nicht
If zaehler>1 and zaehler<5 geht auch nicht^^

LG

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Socke »

If zaehler>1 and zaehler<5 then entspräche in etwa if zaehler > (1 and zaehler) < 5, weil and eine höhere Priorität als einfache Vergleichs-Operatoren hat.
Daher musst du mit Klammern nachhelfen:
If (zaehler>1) and (zaehler<5) then
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Hallo, die Klammern haben mir gefehlt^^ Dankeschön!

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Hallo, frohes Neues Jahr euch Allen!

Ich habe das Programm jetzt fertigbekommen, habe mir aber überlegt einen Hilfsprogramm zu schreiben, der mir bei der Vokabeleingabe hilft.

Momentan muss ich ja den Hauptprogramm öffnen und die Vokabeln einzel eingeben.

Code: Alles auswählen

deutsch [1]:= 'Hallo';
englisch [1]:= 'hello';
etc.

Wenn man 5000 Vokabeln einfügen will, dann sitzt man Stunden dran.

Also habe ich mir überlegt, ob ich es mir wie folgt vereinfache, dass ich nur die Wörter eingeben muss und nicht immer die Vorlage kopiere und die Vokabel einschreiben und die Zahl anpassen.

Code: Alles auswählen

var vok:textfile;
  d:string;
  zaehler:integer;
 
 
begin
writeln ('Vokabeleingabeprogramm');
zaehler:=1;
assignfile (vok,'vokabelliste.txt');
rewrite (vok);
readln (d);
[b]d:= 'deutsch'+zaehler+d;[/b]
writeln (vok,d);
 
closefile (vok);
end.
Das Problem liegt beim "d".

Ich will das deutsche Wort "d", z.B. Hallo, eingeben und der soll es wie folgt abspeichern:

deutsch [1]:= 'Hallo';

also d:= 'deutsch ['+zaehler+']:=''+d+'';';

1. Beim Zaehler mekert er: project1.pas(21,5) Error: Incompatible types: got "LongInt" expected "AnsiString"
2. Meckert er beim Rest.. darf ich nicht " ' " einschreiben?

Bitte um Hilfe bzw. ggfls. andere Vorschläge !

Liebe Grüße
Zuletzt geändert von Lori am So 2. Jan 2011, 21:10, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter benutzen

Bauer321
Beiträge: 465
Registriert: Sa 21. Aug 2010, 21:30
OS, Lazarus, FPC: Windows 7 Ultimate (L 1.2.2 FPC 2.6.4 32-bit)
CPU-Target: 64-Bit
Wohnort: nahe Bremen
Kontaktdaten:

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Bauer321 »

ich denk ma das muss so heißen:

Code: Alles auswählen

d:= 'deutsch[' + zaehler + ']:="' + d + '";';
allerdings haste dann " statt ' aber wie man ein ' benutzen kann hab ich noch nicht geguckt^^
www.mcpatcher.net | www.hoeper.me

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Socke »

Bauer321 hat geschrieben:

Code: Alles auswählen

d:= 'deutsch[' + zaehler + ']:="' + d + '";';
Wenn da gültiger Pascal-Quelltext herauskommen soll, ist das totaler Quark. Außer man ersetzt hinterher alle " durch ' (kann, muss aber nicht funktionieren und richtig sein).
Kia65 hat geschrieben:1. Beim Zaehler mekert er: project1.pas(21,5) Error: Incompatible types: got "LongInt" expected "AnsiString"
2. Meckert er beim Rest.. darf ich nicht " ' " einschreiben?
  • Eine Zahl kann man nicht an einen String anhängen. Nutze IntToStr(zaehler) um die Zahl in einen String zu konvertieren.
  • Das Apostroph-Ersatzzeichen ' (#27) wird in Pascal als Begrenzungszeichen für Zeichenketten verwendet. Entweder verwendest du den typografisch korrekte Apostroph ’ (#$E2#$80#$99 in UTF-8; setzt aber Unicode voraus) oder du schreibst einfach zwei Zeichen hintereinander: 'Das ''s ein String'. Für Pascal-Quelltext verwende am besten letztere Variante.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Hallo,

viele Dank!

Ich möchte das Programm jetzt an einige Freunde weitergeben und wollte fragen wie ich das anrichte, also was ich Ihnen genau zukommen lassen muss?

Ich würde das Programm noch gerne verschlüsseln, sodass nicht jeder da etwas ändern kann.

Vielen Dank!

Liebe Grüße

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Euklid »

Kia65 hat geschrieben:Ich möchte das Programm jetzt an einige Freunde weitergeben und wollte fragen wie ich das anrichte, also was ich Ihnen genau zukommen lassen muss?
Unter Windows: Die vom fpc erzeugte EXE-Datei. Die muss nicht gesondert verschlüsselt werden, die enthält den Quelltext nicht mehr.

Kia65
Beiträge: 8
Registriert: Do 30. Dez 2010, 01:30

Re: Anfänger arbeitet an Vokabeltrainer (Lazarus)

Beitrag von Kia65 »

Vielen Dank für eure Hilfe!

Liebe Grüße

Kia65

Antworten