AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Datenbank mit zufällig generierten Einträgen/Suchfunktion
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank mit zufällig generierten Einträgen/Suchfunktion

Offene Frage von "Alecto"
Ein Thema von Alecto · begonnen am 28. Jan 2006 · letzter Beitrag vom 4. Feb 2006
Antwort Antwort
Alecto

Registriert seit: 28. Jan 2006
7 Beiträge
 
#1

Datenbank mit zufällig generierten Einträgen/Suchfunktion

  Alt 28. Jan 2006, 16:34
Hi.
Ich hoffe, hier kann mir jemand helfen.
In der Schule müssen wir mir Delphi mal wieder ein Programm coden...leider war ich in der letzten Stunde (als wir damit angefangen haben) nicht da, bin mit den Leuten in meinem Kurs nicht so gut gestellt und habe einen Lehrer, der weder dazu befähigt ist, etwas zu erklären, noch Lust dazu hat.

Mein Fazit dazu lautete folglich so: Selbst versuchen, das zu verstehen ist angesagt, und da mein Nachschlagewerk zu Delphi (Objektorientierte Programmierung mit ~) dazu leider auch keinen Ratschlag aufzuweisen hat, frage ich hier.


Das Projekt soll eine Art Datenbank sein, die Kundendaten erfasst. Diese Kundendaten soll das Programm vorher (FormCreate) zufällig generiert (aus den Buchstaben A bis Z) und in einer Listbox gespeichert haben. Alle Zeichenketten haben 8 Zeichen lang zu sein, meinetwegen ABCDEFG.

Wenn das fertig ist, brauche ich eine Suchfunktion, die die Listbox durchsucht und aus den vorhandenen Einträgen gezielt welche sucht, die die eingegebene Zahlenfolge irgendwo in sich selbst aufweisen. Mit dem gefundenen Ergebnis soll ein Editfeld, das ich vorher erstellt habe, gefüllt werden.

Leider habe ich keine Ahnung, wie ich das alles anstellen soll, und wäre euch wirklich dankbar, wenn man mir das ein wenig erklären würde. Gut wären auch ein paar Codezeilen als Beispiel, mit denen ich dann gucken könnte, ob ich es nachvollziehen kann.


Wichtigste Fragen wären:

- Wie erstelle ich zufällig 8-stellige Zahlenketten (Buchstaben A - Z) und speichere diese in einer Listbox?

(- Wozu benutze ich "delimiter" in diesem Projekt?)

- Wie durchsuche ich den Inhalt meiner Listbox nach bestimmten Buchstabenketten?


Wäre sehr, sehr nett, wenn ihr mir ein wenig Klarheit verschaffen könntet.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datenbank mit zufällig generierten Einträgen/Suchfunktio

  Alt 28. Jan 2006, 16:51
Zitat:
Wichtigste Fragen wären:

- Wie erstelle ich zufällig 8-stellige Zahlenketten (Buchstaben A - Z) und speichere diese in einer Listbox?
Delphi-Quellcode:
s := ' ';
for i := 1 to 8 do
begin
  s[i] := Chr(Random(26) + 64);
end;
  list.add( s);
Zitat:
(- Wozu benutze ich "delimiter" in diesem Projekt?)
Du kannst die bei einer Stringliste mit der Eigenschaft .DelimitedText alle Einträge der Liste in einem String zurückliefern lassen. Die Trennung der Felder erfolgt durch das ,in der Eigenschaft .Delimiter eingestellte, Zeichen.

Zitat:
- Wie durchsuche ich den Inhalt meiner Listbox nach bestimmten Buchstabenketten?
Delphi-Quellcode:
for i := 0 to List.Count -1 do
begin
  if pos(list.Strings[i], '<suchstr>') > 0 then ... //gefunden
Markus Kinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Datenbank mit zufällig generierten Einträgen/Suchfunktio

  Alt 28. Jan 2006, 17:06
Herzlich willkommen in der Delphi-PRAXiS.

mkinzler kann schneller schreiben, als ich denken kann, aber weil ich soviel geschrieben habe, musst du es jetzt auch lesen.

Um eine Zeichenkette mit acht zufällig ausgewählten Buchstaben zu erstellen könntest du so vorgehen: Setze die Länge deiner String-Variable (Delphi-Referenz durchsuchenSetLength). Danach kannst du die Variable wie ein character array ansprechen - s[1] ist dabei der erste Buchstabe. Du kannst ihn durch einen anderen Wert ersetzen:

s[i] := 'A'; Buchstaben haben einen CodeWert - der von 'A' ist Ord('A') ist 65 und es gilt für jeden Buchstaben c: Chr(Ord(c)) = c. Der Nachfolger von 'A' ist 'B', kann man auch so erreichen:

Delphi-Quellcode:
c := 'A';
c := Chr(Ord(c) + 1);
Einen Zufallswert im Bereich 0..n-1 erhältst du mit Random(n). Da A bis Z einen zusammenhängenden Bereich von 26 Buchstaben bilden (ASCII, ANSI) weißt du jetzt welchen Wert n haben sollte.

Wenn du geschickt bist, dann schreibst du dir eine Funktion:

Delphi-Quellcode:
function RandomStr(size: Cardinal): String;
begin
end;
Innerhalb deiner Funktion steht dir das Ergebnis als Variable mit dem Namen Result zur Verfügung. Versuche mal dein Glück.

Grüße vom marabu
  Mit Zitat antworten Zitat
Alecto

Registriert seit: 28. Jan 2006
7 Beiträge
 
#4

Re: Datenbank mit zufällig generierten Einträgen/Suchfunktio

  Alt 28. Jan 2006, 20:42
Erstmal vielen lieben Dank euch beiden, mir wird schon einiges viel klarer.

Ich hoffe mal, dass die Umsetzung davon genauso funktioniert, die bereitet mir als Delphi-Anfänger immer noch gern Probleme.

Zu meiner Schande muss ich gestehen, dass ich etwas vergessen habe, was das zufällige Erstellen von Zeichenketten angeht: Und zwar müssen wir nicht nur 1,2 oder 10 Einträge generieren, sondern etwa 1000.
Natürlich könnte ich das alles jetzt in eine Prozedur stecken und 1000 mal aufrufen und durchlaufen lassen, aber das geht doch sicher schneller und einfacher?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Datenbank mit zufällig generierten Einträgen/Suchfunktio

  Alt 28. Jan 2006, 20:57
Einfach Schleife drum rum
Delphi-Quellcode:
for j := 1 to 1000 do
begin
  s := ' ';
  for i := 1 to 8 do
  begin
    s[i] := Chr(Random(26) + 65);
  end;
  list.add( s);
end;
Und Schon hast du 1000 Einträge aus zufälligen Zeichenketten in deiner StringListe
Markus Kinzler
  Mit Zitat antworten Zitat
Alecto

Registriert seit: 28. Jan 2006
7 Beiträge
 
#6

Re: Datenbank mit zufällig generierten Einträgen/Suchfunktio

  Alt 4. Feb 2006, 17:09
Hallo, ich bin es wieder.
Erstmal danke an mkinzler für den Tip mit der Schleife.

Nun habe ich versucht, das alles umzusetzen, aber irgendwie klappt es noch nicht. Ich poste mal den Code, ja? Dazu natürlich meine Ideen und was ich bis jetzt dazu überlegt habe.
Übrigens: Wenn ich den Suchen-Teil allein ausführen will, bekomme ich einen ReadError.

Delphi-Quellcode:
unit msuchen;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    edkunde: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    edkundennummer: TEdit;
    edumsatz: TEdit;
    edtyp: TEdit;
    ListBox1: TListBox;
    bt_suchen: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit5: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    bt_test: TButton;
    procedure bt_suchenClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    
  private
    { Private-Deklarationen }
    kunde: string;
    ZArray : array['A'..'Z'] of char;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.bt_suchenClick(Sender: TObject);
var i:integer;
begin
for i := 0 to Listbox1.Count -1 do
begin
  if pos(listbox1.items[i], '<suchstr>') > 0 then ... //gefunden
end;

procedure TForm1.FormCreate(Sender: TObject);
var j:integer;
i:integer;
s:string;
begin
  for j := 1 to 1000 do
  s := ' ';
  for i := 1 to 8 do
  begin
    s[i] := Chr(Random(26) + 65);
  end;
  listbox1.add( s);
end;

end.
procedure TForm1.Button4Click(Sender: TObject);
zuordnen(delimiter:char;
quelle:string;
var e1,e2,e3,e4:tedit)

begin
e1.text:=copy(quelle,1,pos(delimiter,quelle)-1);
delete(quelle,1,ps(delimiter,quelle));
e2.text:=copy(quelle,1,pos(delimiter,quelle)-1);

---

{zuordnen('#',kundenbox.items[i],edname,edkundennummer,
edumsatz,edtyp);
end;    }
So sieht es bis jetzt aus, und einige Teile funktionieren sogar, aber der Rest...nun:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var j:integer;
i:integer;
s:string;
begin
  for j := 1 to 1000 do
  s := ' ';
  for i := 1 to 8 do
  begin
    s[i] := Chr(Random(26) + 65);
  end;
  listbox1.add( s);
end;
Aus j, i und s habe ich Variablen gemacht.
Nun funktioniert das Einfügen in die Listbox (Listbox1) aber nicht, kann mir jemand erklären, wie ich das ändern könnte, sodass es funktioniert?
Und was mache ich mit listbox1.add( s);?

Delphi-Quellcode:
begin
procedure TForm1.bt_suchenClick(Sender: TObject);
var i:integer;
begin
for i := 0 to Listbox1.Count -1 do
begin
  if pos(listbox1.items[i], '<suchstr>') > 0 then ... //gefunden
end;
Das gehört zur Suchfunktion.

Könnte man das Ergebnis der Suche so in das Editfeld schreiben:
if pos(listbox1.items[i], '<suchstr>') > 0 then edit1.caption + 'ergebnis'?
'ergebnis' müsste irgendetwas mit einem Listbox-Index oder so sein, glaube ich.
Weiß das vielleicht jemand?

Wäre sehr nett, wenn mir jemand helfen könnte.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz