![]() |
StrinGrid, random String, Vokabel Abfrage
Hi,
ich schreibe ein Vokabel-Trainer und leider bin ich schon bei der eigentlichen Funktion stecken geblieben. Meine "Datenbank" ist ein StringGrid und ich möchte, dass der Vokabel_Abfrage aus willkürlichen StrinGGrid-Zellen geschieht. Also dass es eine Zufallsabfrage wird. Naja, hoffe ihr könnt mir helfen. Achja: inner boardsuche habe ich nichtsgefunden, also wenn ihr fündig werdet, dann her damit!!! |
hy,
ich muss in der schule genau das gleiche programm scchreiben! die loesungen habe ich schon, aber leider in der schule..:( schau dass och morgen irgendwie sie mitbrtingen kann! bis dann cu |
jou, dank schonmal auf die schnelle antwort.
hasse so ungefähr den quelltext im kopf?? Wenns geht, dann möchte ich das noch heute zu Ende coden!!! |
Du hast doch in der Überschrift schon random geschrieben. Weiß jetz nicht, ob das Funktioniert, aber probier mal:
Delphi-Quellcode:
Hab das jetzt nicht probiert, lasse mich auch gern verbessern.
StringGrid1.cells[0,random(StringGrid1.rowcount-1)];
Man liest sich. Stanlay; |
Jou funktioniert doch! Muss mich wohl vorher verschrieben haben.., thx a lot
EDIT: weiteres Problem: naja da das ja jetzt random ist, wie muss ich dann die abfrage machen? beispiel: wenn sagen wir ein random string "affe" gewählt ist, dann müsste ja die antwort darauf "ape" sein, aber wie bekomm ich das hin, dass "affe" auch gleich "ape" zugeordnet ist und nicht "victim", capiché? Naja einfacher gehts wohl nicht... |
Ich kenn zwar StringGrids nicht, aber "ich werde das krasse Gefühl nicht los, dass" der letze Eintrag so nie drankommt!
|
Weitere Frage: Wie kann man eigentlich ein StringGrid bewegen die Inhalte all seiner Zellen zu löschen??
Gibt es sowas wie "restart"? |
hab das problem mit dem löschen mit ner schleife gelöst naja hier der code:
Delphi-Quellcode:
[edit=Daniel B]Delphi-Tags eingefügt und Code formatiert. MfG Daniel B.[/edit]
procedure TForm1.NeuButtonClick(Sender: TObject);
var x:integer; begin x:=-1; repeat begin inc(x); StringGrid1.Cells[0,StringGrid1.RowCount-x]:=''; StringGrid1.Cells[1,StringGrid1.RowCount-x]:=''; end; until StringGrid1.Cells[0,0]=''; end; |
hi nochmal,
ich verzweifle hier schon wieder wegen dieser randomsache!!!! Also wie schon oben geschrieben, habe ich nun das Problem, dass die Abfrage nicht mehr stimmt. Die Vokabel-Abfrage. Naja wenn der Vergleich von StringGrid.Cells[0,x] mit StringGrid.Cells[1,x] funktionieren würde, wäre cool, still waiting... @ssach wolltest du nicht source code geben? |
@ nailor: hallo. warum glaubst du, dass der letzte eintrag nicht drankommt. ich geh mal davon aus, dass du dich auf meinen Code beziehst.
Man liest sich, Stanlay 8) |
Hallo,
ich habe es nach VCL-Komponenten verschoben, mit Datenbanken hat das ja wirklich nichts zutun. ;) Grüsse, Daniel :hi: |
wenn rowcount (wie ich vermute) die anzahl der reihen angibt, und du ZB. 2 zeilen hast, und dann random(2-1) aufrufst, wirst du immer das ergebnis 0 haben. gibt rowcount den höchsten index an, dann wird die sache auch nicht besser. also nehme ich an, dass es so wie es immoment ist, falsch ist
|
Zitat:
Man liest sich. Stanlay 8) |
GEnau und (Random(1) = 0) ist immer true. weil es nur eine möglichkeit gibt!
|
Wie ich sehe, komm ich nicht rum eine neue Prozedur mit Random_Abrage-Algorithmen zu coden. Naja, Vorschläge erwünscht. Bis dahin versuche ichs selber.
|
@ Nailor. Ziehe mich zurück. :oops: Hast natürlich recht. :wall:
Man liest sich in Demut. Stanlay :oops: |
So ich habe es nun wie folgt gemacht:
Delphi-Quellcode:
Zu sagen ist noch: Label1 ist Visible:=false, sprich invisible!
procedure TForm1.NextButtonClick(Sender: TObject);
var x:integer; begin x:=0; x:=random(StringGrid1.rowcount-1); Label1.Caption:=IntToStr(x); VokabelLabel.Caption:=StringGrid1.cells[0,StrToInt(Label1.Caption)]; end; und entsprechend bei der abfrage (Button): procedure TForm1.EnterButtonClick(Sender: TObject); begin VokEingabeEdit.Text=StringGrid1.cells[1,StrToInt(Label1.Caption)] end; Naja jetzt habe ich es hinbekommen, dass die Abfrage richtig beantwortet wird, doch dann ist mir aufgefallen, dass bei Random, nicht alle Zellen drankommen, nur ein paar. Wie könnte ich denn alle abfragen lassen? Vielleicht mit nem Timer immer neue Werte erstellen und dann random? |
Wenn du nur Random nimmst, werden immer die gleichen Zufallszahlen erzeugt, so dumm sich das auch aanhört. Du musst vorher irgendwo die Procedur
Delphi-Quellcode:
aufrufen. Dann werden bei jedem Random andere Zufallszahlen erzeugt.
Randomize;
Man liest sich. Stanlay 8) |
Zitat:
Ich dachte wieder an sowas wie ne Schleife, dass der einfach die Zellen durchgeht, aber dann könnte ich keine Abfrage mehr machen. Vielleicht ginge es ja wenn ich "break" setze: Kann man extern (z.B per Button) eine Schleife zum Stoppen bringen (mit "break")?? Oder kennt einer unter euch ne bessere Lösung?? @ssach wo bleibt denn jetzt der source code deines Vokabel Trainers? |
Ich versteh nicht was du meinst mit: "Muss ich dafür wirklich eine eigene Procedur machen?" Radomize ist doch schon eine eigene Procedur, die du einfach nur z.B. gleich nach dem begin in deinem NextButtonOnClick Ereignis vor den anderen Anweisungen schreiben musst.
Oder hab ich dich falsch verstanden? |
lol, scheint so als würden wir andere delphi sprachen sprechen^^. Unter Prozedur verstehe ich immer "procedure" in delphi(f. E.: procedure TForm1.Timer1Timer(Sender: TObject);) und du meintest in meiner sprache dann eine "anweisung/befehl/command..."
|
Sorry, wenn ich mich unklar/ungenau/undeutlich/unverständlich/unsauber :wink: ausgedrückt hab. Wir werden uns schon irgendwie verstehen, oder ? :wink:
|
Zitat:
du hast die Lösung doch schon in deiner Frage stehen.
Delphi-Quellcode:
(Sorry, habe nicht darauf geachtet das der Beitrag schon über zwei Seiten geht)
x:=Random(StringGrid1.rowcount-1);
MfG Adler |
@Stanlay Hanks: kein problem
@Adler: macht nichts! |
Gibt es wirklich keinen unter euch, der mir bei meinem Problem helfen könnte? Also ich geh mal krass davon aus, dass delphi sehr viele Befehle hat, mit denen man das machen könnte und sicher sind da draußen ein paar, die alle Befehle drauf haben oder die wichtigsten!!!
Greeetz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz