Datenbank Tutorial
Übersicht

vanjoloBetreff: Datenbank Tutorial |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo
gibt es irgendwo ein Datenbank Tutorial? Oder hat jemand ein einfaches Beispiel auf das man aufbauen könnte? Ich müste aus einer Text Datei Daten einlesen und wieder raussuchen können, bzw nach Datensätzen filtern können. Die Daten selbst würde ich Zeilenweise mit semikolon getrennt schreiben. Ich habe nichtmal ansatzweise eine Idee wie ich beginnen könnte. |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was du brauchst findet man unter "String Parsing". Für diesen Speziellen Fall kann ich dir SpionAtoms nwort$ Funktion nur empfehlen:
Code: [AUSKLAPPEN] ; SpionAtom:
; satz$ ist der zu untersuchende String wort gibt an, das wievielte Wort gesucht werden soll Function nwort$(satz$, wort) If wort < 1 Then Return "" trenn$ = ";" ;<-- Trennzeichen satz$ = satz$ + trenn$ w = 0 pos = 1 While w < wort And pos > 0 While Mid$(satz$, pos, 1) = trenn$ pos = pos + 1 Wend x = pos y = Instr(satz$, trenn$, pos) pos = y w = w + 1 Wend Return Mid$(satz$, x, y - x) End Function |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
vanjolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich versteh nur Bahnhof ![]() Ich möchte eine Textdatei mit Daten z.b.: f16;14,52;9,45;5,09;2142;76,31;Die F-16 Fighting Falcon ist ein Mehrzweckkampfjet der amerikanischen Firma General Dynamics f18;17,07;11,43;4,66;1880;106,6;Die F/A-18 Hornet ist ein zweistrahliges Mehrzweckkampfflugzeug des US-Flugzeugbauers McDonnell Douglas einlesen diese Daten sollen so aufgeschlüsselt angezeigt werden: Typ: F16 Länge: 14,52 m Spanweite: 9,45 m Höhe: 5,09 m Geschwindigkeit: 2142 km/h Schubkraft: 76,31 kN Wenn ich z.b. nach Geschwindigkeit: 2000 suche, sollen mir alle Flugzeuge ausgeworfen werden die mind. 2000 km/h fliegen. Ich weis nichtmal womit ich anfangen soll ![]() |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
- Zuletzt bearbeitet von vanjolo am Mi, Feb 04, 2009 20:44, insgesamt einmal bearbeitet
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du willst eine art datenbank selber erstellen?
in jeder zeile sind mehrere daten.. sofern ich das richtig verstanden hab mit ReadLine ![]() ![]() ![]() ![]() ![]() |
||
vanjolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also gedanklich stell ich mir volgende Struktur vor.
- Datei einlesen - Suchmaske Typ: Länge: Spanweite: Höhe: Geschwindigkeit: Schubkraft: Beschreibung: evtl. Foto - Dort kann ich ein oder mehrere Bedingungen setzen. - Anzeige der passenden Datensätze Drucken, Neue Suche, Verlassen Das ganze im Style vom alten DOS ![]() |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde das in einem strukturierten Textfile machen.
z.B. sowas: Code: [AUSKLAPPEN] [AIRPLANE] NAME = Lolinator 123 LENGTH = 13.37 etc. [/AIRPLANE] Dann das ganze mit ReadLine auslesen und parsen. Du musst herausfinden ob es ein Flugzeug ist (If txtline$ = "[AIRPLANE]"), wie die Daten sind (Instr ![]() ![]() Es ist nicht viel mehr dahinter als etwas Textparsing. MfG |
||
vanjolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du meinst alle Flugzeugdaten die ich sammel in dieser Form in ein Text file schreiben.
Code: [AUSKLAPPEN] [F16]
Länge = 14,52 m Spanweite = 9,45 m Höhe = 5,09 m Geschwindigkeit = 2142 km/h Schubkraft = 76,31 kN [/F16] Jetzt die Datei einlesen mit: file = OpenFile("daten.txt") und dann die suchfunktion? |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Je nach dem, wie du das Textfile gestallten möchtest... Einzeilig:
Daten.txt Code: [AUSKLAPPEN] f16;14,52;9,45;5,09;2142;76,31;Die F-16 Fighting Falcon ist ein Mehrzweckkampfjet der amerikanischen Firma General Dynamics
f18;17,07;11,43;4,66;1880;106,6;Die F/A-18 Hornet ist ein zweistrahliges Mehrzweckkampfflugzeug des US-Flugzeugbauers McDonnell Douglas Datenbank.bb Code: [AUSKLAPPEN] Graphics(800, 600, 0, 2)
; Jeder Datenbank-Eintrag wird mit diesen Daten gefüttert: Type TFlugzeug Field Typ$ Field Lang# Field Spanweite# Field Hoch# Field Geschwindigkeit# Field Schubkraft# Field Beschreibung$ End Type Datenbank_Lesen() Datenbank_Zeigen() Suche_Spannweite(0, 10) ;Spannweite größer 10 m WaitKey() End Function Datenbank_Lesen(file$="Daten.txt") ;* Die Datei muss vorhanden sein, hier wird nicht darauf getestet! Local source = OpenFile(file$) ;* Einlesen der Datei Zeile für Zeile: Repeat Local zeile$ = ReadLine(source) ;Zeile aus der Datei Lesen zeile$ = Replace(zeile$, ",", ".") ;Deutsch->Englisch Komata (Achtung, Komata im Text werden auch Punkte!) Local F.TFlugzeug = New TFlugzeug ;Ein neuer Datenbank-Eintrag ;* Jetzt wird die Zeile an den ";" gesplittet F\Typ$ = nwort$(zeile$, 1) F\Lang# = Float(nwort$(zeile$, 2)) ; nwort liefert einen String, besser man konvertiert in das ziel Format (Float) F\Spanweite# = Float(nwort$(zeile$, 3)) F\Hoch# = Float(nwort$(zeile$, 4)) F\Geschwindigkeit# = Float(nwort$(zeile$, 5)) F\Schubkraft# = Float(nwort$(zeile$, 6)) F\Beschreibung$= nwort$(zeile$, 7) Until Eof(source) ;Bis zum ende der Datei. ;Diese Technik funktioniert nur dann, wenn die Art der Einträge immer vorhanden sind und immer in der gleichen Reihenfolge ;auftauchen. Für kompliziertere Daten muss man einen größeres Parser bemühen. CloseFile source End Function Function Datenbank_Zeigen() ;Sollte selbsterklärend sein... Local F.TFlugzeug, i=0 For F = Each TFlugzeug i=i+1 Print "Typ: "+F\Typ$ Print "Länge: "+F\Lang# Print "Spanweite: "+F\Spanweite# Print "Hoch: "+F\Hoch# Print "Geschwindigkeit: "+F\Geschwindigkeit# Print "Schubkraft: "+F\Schubkraft# Print "Beschreibung: "+F\Beschreibung$ Next Print "-----" Print i+" Einträge gefunden" End Function ; gk = 0 -> Größer als ; gk = 1 -> Kleiner als Function Suche_Spannweite(gk=0, wert#) Local F.TFlugzeug, i=0 For F = Each TFlugzeug If gk = 0 Then If F\Spanweite# > wert# Then Print F\Typ$ + " mit " + F\Spanweite# EndIf Else If F\Spanweite# < wert# Then Print F\Typ$ + " mit " + F\Spanweite# EndIf EndIf Next End Function ; SpionAtom: ; satz$ ist der zu untersuchende String wort gibt an, das wievielte Wort gesucht werden soll ; Im String "Test;Lallilu;805" ist "Test" wort=1, "Lallilu" ist wort=2 und "805" ist wort = 3 ; Achtung!: Zahlen ins passende Format kovertieren mit int() oder Float()! Function nwort$(satz$, wort) If wort < 1 Then Return "" trenn$ = ";" ;<-- Trennzeichen satz$ = satz$ + trenn$ w = 0 pos = 1 While w < wort And pos > 0 While Mid$(satz$, pos, 1) = trenn$ pos = pos + 1 Wend x = pos y = Instr(satz$, trenn$, pos) pos = y w = w + 1 Wend Return Mid$(satz$, x, y - x) End Function Edit: Einfache Suchfunktion ergänzt, ich Kommetier nochmal durch... Edit 2: Ein paar mehr Kommentare eingefügt. closefile ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am Mi, Feb 04, 2009 22:08, insgesamt 3-mal bearbeitet
vanjolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
![]() ![]() Peinlich ich versteh nichtmal Ansatzweise wie man sowas so schnell hinzaubert. ![]() Ich versuche mal den Code zu verstehen und dann eine Suchfunktion zu schreiben. Ich hoffe ich darf nochmal fragen wenn ich nicht weiterkommen. Danke!! |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
also wenn du alles in nem Type hast, ist das nicht sehr schwer eine Suchfunktion zu machen ![]() wenn du willst kann ich dir die Suchroutine meines TPB schicken ^^ mfg |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
vanjolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das wäre super ![]() |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If Not CountGadgetItems (listbox2)=0
FreeGadget listbox2 listbox2 = CreateListBox (200,290, 200,190, win) malu=0 EndIf EndIf first_time=0 For i= 1 To anzz pos = 0 input_lower$=Lower$(input_search$) input_lower$=Trim$(input_lower$) tracks_lower$=Lower$(tracks_short$(i)) tracks_lower$=Trim$(tracks_lower$) pos = Instr (tracks_lower$,input_lower$) If pos <>0 AddGadgetItem listbox2, "("+i+") "+tracks_short$(i) ;Print CountGadgetItems (listbox2) EndIf Next EndIf If search=1 And SelectedGadgetItem (listbox2)<>-1 search=0 slu=1 sel_1=SelectedGadgetItem (listbox2) glob$=Mid(GadgetItemText$ (listbox2, sel_1),2,-1) pos2 = Instr (glob$,")") akt = Mid (glob$,1,pos2-1) SelectGadgetItem(listbox,akt) EndIf Kurze Erklärung(bin inner Schule), hier sind die Lieder als Dim gespeichert. Die Pfade zu den Lieder sind in einer Datei und auch als Dim ausgelesen. Nun duchsuchen wir alle einträge mittels instr und wenn etwas gefunden wird, wird es in einer 2ten Listbox eingetragen. Jeder eintrag hat auch noch ein 2tes Feld, welches die Lieder "ID" enthält, diese sagt aus, welcher Eintrag es in der Libary hat. Hoffe es hilft ![]() |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
vanjolo |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke Dir. Ich kann es erst heute abend ausprobieren, bin auf der Arbeit ![]() |
||
***************************
in Entwicklung: Tank Battles - Panzeraction Pacific Battles - Rundenstrategie abgeschlossenes Projekt: Harrier Assault |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group