Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich stehe vor folgendem Problem:

Ich soll ein Programm zum auswendig lernen von Telefonnummern schreiben. Es geht zwar nur um geringe Datenmengen, aber ich soll es aus Lernzwecken mit Hilfe einer InterBase-Datenbank realisieren.

Folgende Frage:

Wie kann ich aus der Tabelle TELNR den Inhalt einer Select Anweisung in ein Array einlesen und in edit-komponenten zufällig ausgeben?

Z.B. select name, rufnummer from TELNR where ID <= 25 and ID > 0

// die mit diesem Select ausgelesene Datenmenge möchte ich in zufälliger Reihenfolge ausgeben manchmal nur den Namen, manchmal nur die Nummer und der User soll das fehlende jeweils ergänzen.

Wie geht das, oder wie würdet Ihr das machen?

Gruß

SIMI

Geschrieben

Nimm eine TIBQuery, starte die Abfrage. Dann füllst du ein vordefiniertes Array mit Query.FieldByNAme('Feldname').Value in einer while not Query.Eof Schleife. Am Ende der Schleife machst du Query.Next.

Einigermaßen verständlich? Wenn nicht, weiter nachfragen...

Geschrieben

ist verständlich!

Nur noch eins: Irgend ne Idee, wie ich das mit dem "Zufall" hinkriege? Wenn die Nummern alle der Reihe nach abgefragt werden, ist das doch "langweilig"...

Noch was anderes: Wenn ich in der Verwaltung der Telefonnummern einen Namen und eine Nummer eintragen will speichert der regelmäßig die Nummer nicht mit ab, obwohl alle Definitionen stimmen und auch die Feldname-Eigenschaft richtig ist (TDBEdit-Komponente). Bei einem Kollegen auf dem Rechner funktioniert das, allerdings nur mit Zahlen. Das ist komisch, weil der eigentliche Datentyp varchar(20) lautet.

???

Danke für die Hilfe

:uli

Geschrieben
Original geschrieben von SteffiMichi

Nur noch eins: Irgend ne Idee, wie ich das mit dem "Zufall" hinkriege? Wenn die Nummern alle der Reihe nach abgefragt werden, ist das doch "langweilig"...

Ok, dann probieren wir mal ;)...


var

 UsedNumbers: set of byte; // set darf maximal 256 Elemente haben


procedure TForm1.create(Sender:TObject);

begin

[...];

  randomize; // Wichtig für Zufallszahlen!!

  UsedNumbers:= [];  //Initialisieren

[...]

end;


function GetNewRandomID: Integer;

var i: Integer;

begin

  Result:= -1;

  i:= Random(256);

  while i in UsedNumbers do

    i:= Random(256);

  UsedNumbers:= UsedNumbers +[i];

  Result:= i;

end;

Das ist jetzt nicht geprüft oder so, sollte aber funktionieren. Die Funktion GetNewRandomID liefert einen zufälligen Index aus deinem Array zurück. In diesem Code sind aber maximal 256 Einträge zulässig (wegen dem Set of). Wenn du mehr brauchst könntest du das erreichen indem du für UsedNumbers ein dynamisches Array of Integer erzeugst. Die Prüfung ob eine Zahl dadrin ist bzw. eine neue Hinzufügen ist dann aber ein bisschen aufwendiger, deswegen als Beispiel hier mit Set.

Wenn ich mir das so ansehe könnte es vielleicht zu Problemen kommen, wenn schon viele Nummern genutzt sind. Ausserdem fehlt eine Prüfung ob UsedNumbers schon alle 256 Zahlen hat und es damit zu einer endlos Schleife kommen würde. Ist ja aber nur ein Beispiel.

Geschrieben

Erstmal DANKE für die Antworten, werde ich im Lauf des Tages gleich mal testen.

Gestern war ich leider nicht da, deshalb konnt ichs da noch nicht testen.

Falls ich noch weitere Fragen hab, wende ich mich vertrauensvoll an euch!

:D :D :D

SIMI

Geschrieben

Das Problem mit dem Nicht-Abspeichern von Rufnummern in die Tabelle ist gelöst!

Ich hatte eine Prozedur MaskeSetzen in einer sbtnpost.click aufgerufen.

Mein Aufruf erfolgte in folgender Reihenfolge:

procedure TNUMMERNFORM.sbtnpostClick(Sender: TObject);

begin

MaskeSetzen(false);

if cb_abschnitt.Text <> '' then

DM.NUMMER.FieldValues['ABSCHNITT'] := cb_abschnitt.Text;

DM.NUMMER.Post;

SQLUpdate;

DBGrid1.SetFocus;

end;

//Bei dieser Variante wurde jedesmal die Rufnummer nicht mit gespeichert...

procedure TNUMMERNFORM.sbtnpostClick(Sender: TObject);

begin

if cb_abschnitt.Text <> '' then

DM.NUMMER.FieldValues['ABSCHNITT'] := cb_abschnitt.Text;

DM.NUMMER.Post;

MaskeSetzen(false);

SQLUpdate;

DBGrid1.SetFocus;

end;

//Bei dieser Variante funktioniert es und wird gespeichert!

Geschrieben

Ich habe noch eine kleine Frage zum Abspeichern von Datensätzen in einer Tabelle:

Wenn man Datensätze als Passwort speichern möchte, gibt es da die Möglichkeit, sie irgendwie verschlüsselt zu speichern? Oder kann der DB-User die immer lesen?

Das Tool soll nämlich die Möglichkeit bieten einem Administrator Nutzer anzulegen und den Benutzern dann, sich einzuloggen.

Theoretisch wäre es zwar nicht schlimm, wenn der Admin die Passworte lesen könnte, aber vielleicht gibt's da ja eine Möglichkeit, dieses zu unterbinden?!

Bin jedenfalls für Hilfe dankbar!:bimei

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...