| |
Suche Visual-Basic CodeRe: Wörterbuch | | | Autor: Danzi | Datum: 24.11.03 17:40 |
| Um eine Datenbank zu erstellen, bedarf es keiner Installation einer Datenbankanwendung. Eine Datenbank ist eine ganz normale Datei. Du arbeitest halt mit normalen Textdateien (z. B. .ini). Eine Random-Datei ist aber viel leichter zu handhaben. Der folgende Code zeigt nur die Subs zum Speichern und Suchen. Er bracht natürlich noch eine Umgebung zur Steuerrung.rem Deklarationsteil
Private Type WBDatensatz
Deutsch As String * 50
Italienisch As String * 50
End Type
Private WörterbuchDS As WBDatensatz
Private Sub EintragHinzufügen(ByVal DeutscherBegriff As String, ByVal _
ItalienischerBegriff As String)
Open "C:\Wörterbuch" For Random As #1 Len = Len(WörterbuchDS)
WörterbuchDS.Deutsch = DeutscherBegriff
WörterbuchDS.Italienisch = ItalienischerBegriff
Put #1, LOF(1) / Len(WörterbuchDS) + 1, WörterbuchDS
Close #1
End Sub
Private Function DeutschenBegriffSuchen(ByVal ItalienischerBegriff As String) _
As String
Dim SatzNr As Long
ItalienischerBegriff = UCase$(Trim$(ItalienischerBegriff))
Open "C:\Wörterbuch" For Random As #1 Len = Len(WörterbuchDS)
For SatzNr = 1 To LOF(1) / Len(WörterbuchDS)
Get #1, SatzNr, WörterbuchDS
If UCase$(Trim$(WörterbuchDS.Italienisch)) = ItalienischerBegriff Then
DeutschenBegriffSuchen = Trim$(WörterbuchDS.Deutsch)
Exit For
End If
Next
Close #1
End Function Warum macht ihr immer alles so umständlich? | |
Wörterbuch | | | Autor: dstk | Datum: 13.11.03 09:37 |
| Hallo!
Ich hab mir mal gedacht ich schreib ein Wörterbuch Deutsch-Italienisch.
Also natürlich würde es gehen, wenn ich jedes Wort mit If..Then..End If mache, aber das is stressig, stattdessen wäre eint *.txt oder .ini Datei feiner wo ich z.B.
schreibe hallo = ciao usw. Gibt es da eine Funktion die das reingeschriebene Wort nach Übereinstimmung in dieser Datei sucht und gegebenfalls holt?
ciao und danke
Übrigens: An Italienisch und Deutsch fehlts bei mir nicht
|||10110100011111110011||| | |
Re: Wörterbuch | | | Autor: dstk | Datum: 17.11.03 14:35 |
| nana dat oder ini reich vollkommen, sind ja eh nur max 50 wörter drinnen
wie geht das dann? hab folgendes probiert:
Dim DateiNr As Integer
Dim Temp As String
Dim Zeile As String
Dim nC As Integer
Private Sub cmdt_Click()
DateiNr = FreeFile
Open "wb.dat" For Input As DateiNr
Dim txtital() As String
txtital = Split(Zeile, Chr$(32))
For nC = 0 To UBound(txtital)
Debug.Print txtital(nC)
Next nC
End Sub Aber das funkt net.
nochmal die wörter stehen so:
italienisch = deutsch
... = ..... etc.
danke
|||10110100011111110011||| | |
Re: Wörterbuch | | | Autor: dstk | Datum: 20.11.03 19:37 |
| Also da ihr mir nich geholfen habt, hab ich mich selbstständig gemacht ;)
Hier ist der code: Original ist er von www.vb-fun.de
Hab ihn aber meinen bedürfnissen angepasst
' benötigt werden: Textfeld Text1, Command-Button Command1, List-Box List1 und
' Label Label2
Option Explicit
Private Sub Text1_Validate(KeepFocus As Boolean)
If Len(Text1) = 1 Then
MsgBox "Devi inserire piú di una lettera sola!!!", vbCritical
End If
End Sub
Private Sub Text1_GotFocus()
' Markieren wenn Text1 wieder angeklickt wird
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub Command1_Click()
Dim x&, Zeilen() As String, FName$
MousePointer = vbHourglass
FName = App.Path & "\wb2.dat"
List1.Clear
Label2.Caption = ""
Label2.Refresh
'Die letzten beiden Parameter geben das linke und rechte
'Begrenzungszeichen einer Zeile an, dies können auch
'mehrere sein. Hier wurde für links vbLf (chr$(10)) und
'für rechts vbCr (chr$(13)) gewählt
If FindTerm(FName, Text1.Text, Zeilen, vbLf, vbCr) Then
List1.Visible = False
DoEvents
For x = 0 To UBound(Zeilen) - 1
If x < 32736 Then
List1.AddItem Zeilen(x)
Else
List1.Clear
List1.AddItem "Non c'é posto per tutti i nomi!"
List1.AddItem "Specifica la tua richiesta!"
Exit For
End If
Next x
List1.Visible = True
Else
List1.AddItem "Parola non trovata!"
End If
If UBound(Zeilen) = 1 Then
Label2.Caption = "1 riga trovata"
ElseIf UBound(Zeilen) = 0 Then
Label2.Caption = "0 rige trovate"
ElseIf UBound(Zeilen) > 1 Then
Label2.Caption = UBound(Zeilen) & " rige trovate"
Else
Label2.Caption = UBound(Zeilen) & " Riga(e) trovata(e)"
End If
MousePointer = vbDefault
End Sub
Private Function FindTerm(File$, s$, ZZ$(), tl$, tr$) As Boolean
Dim c&, f%, i&, j&, L&, lc&, p&, v&, w&
Dim a$, d$, n$, o$
'Dieser Wert gibt die Paketgröße von Get# an. Er kann beliebig
'geändert werden, sollte aber nicht kleiner als die längste
'zu erwartende Zeile des zu druchsuchenden Files sein
Const PS& = 1024&
ReDim ZZ(0)
'Prüfen ob Parameter plausibel sind
If tl$ = "" Or _
tr$ = "" Or _
s$ = "" Or _
Dir$(File, vbNormal) = "" Then
List1.AddItem "I Parametri non sono giusti!"
Exit Function
End If
f = FreeFile
Open File For Binary Shared As #f
L = LOF(f)
'Anzahl der Durchläufe anhand der Dateigröße ermitteln
p = L \ PS
If L Mod PS <> 0 Then p = p + 1
'Schleife starten
For c = 1 To p
n = Space$(PS)
Get f, , n
a = o & n
i = InStr(1, a, s)
If i <> 0 Then
'Suchbegriff wurde im aktuellen Paket gefunden
lc = 0
Do
i = InStr(i, a, s)
If i <> 0 Then
'Zeilenanfang suchen
v = 1
For j = i To 1 Step -1
d = Mid$(a, j, 1)
If InStr(1, tl, d) Then
'gefunden
v = j + 1
Exit For
End If
Next j
'Zeilenende suchen
w = 0
For j = i To Len(a)
d = Mid$(a, j, 1)
If InStr(1, tr, d) Then
'gefunden
w = j - 1
Exit For
End If
Next j
If w <> 0 Then
'Zeile auschneiden und in einem Feld speichern
'Hier könnten auch weitere Suchkriterien abge-
'fragt werden.
ZZ(UBound(ZZ)) = Mid$(a, v, w - v + 1)
ReDim Preserve ZZ(0 To UBound(ZZ) + 1)
lc = w
End If
i = w
End If
'Weiter schleifen, da der Suchbegriff im Paket ja
'öfters als einmal auftauchen kann
Loop Until i = 0
If lc = 0 Then
'Suchbegriff wurde im aktuellen Paket nicht ge-
'funden. Daher ganzen String für die nächste Runde
'speichern
o = a
Else
'Ab Ende der zuletzt gefundenen Zeile des aktuel-
'len Paketes für die nächste Runde speichern
o = Mid$(a, lc)
End If
Else
'Paket der aktuellen Runde speichern
o = n
End If
Next c
Close f
If UBound(ZZ) > 0 Then FindTerm = True
End Function |||10110100011111110011||| | |
Re: Wörterbuch | | | Autor: Danzi | Datum: 23.11.03 19:42 |
| Dieters Vorschlag ist besser. Eine Art Datenbank läßt sich mittels Random-Datei sehr schnell erstellen. Der Code wäre sehr viel kürzer und übersichtlicher. Obendrein lassen sich die Daten sehr leicht pflegen. Deine Lösung (die gefundene) ist ganz schön umständlich. | |
Re: Wörterbuch | | | Autor: dstk | Datum: 24.11.03 14:18 |
| Es kommt darauf an: Ich finde dies nicht so umständlich, ausserdem sollte das Programm ohne Installation funktionieren. Wie würde deine bzw. Dieters Lösung ausschauen??
|||10110100011111110011||| | |
Re: Wörterbuch | | | Autor: dstk | Datum: 25.11.03 16:35 |
| also hier muss ich schon anmerken, dass hier meine methode viel leichter vorkommt. Es ist vielleicht weniger "Text", aber was macht das schon??
|||10110100011111110011||| | |
Re: Wörterbuch | | | Autor: Danzi | Datum: 25.11.03 18:49 |
| Bei einem Wörterbuch größeren Umfanges wirst Du es schon merken. Dann kann man mit meiner Methode mittels einer Vektor-Datei gezielt suchen und braucht nicht die ganze Datei durchsuchen. | |
Re: Wörterbuch | | | Autor: dstk | Datum: 26.11.03 21:07 |
| Ach seis drum. Ich bin mit meiner methode zufrieden,k da ich es nur für ein Projekt brauch und nur die dort vorkommenden Wörter brauche. Aber trotzdem danke
|||10110100011111110011||| | |
Re: Wörterbuch | | | Autor: Momo1968 | Datum: 08.12.03 23:41 |
| Ciao Amiego
ich bin Vielleicht Spät dran das ich deine Frage nicht gesehen habe , Also ich hatte auch diese Problem frühe aber da für habe ich ganz gute Idee gefunden das heißt du kannst dein Wörterbuch nicht mit if Then sondern mit einem Datenbank und das ist ganz einfach ich kann dir jetzt sofort ein ganz einfache Programm erstellen und du kannst weiter entwickeln .... aber Weist du wo ist Das Problem wer wird für dich 50000 Wörter schreiben???? das war für mich ein Problem!!! also wenn du Jemand Hast, dann ich helfe dir gern mit Programmieren
so in dein VB ein Neu Projekt EXE erstelen , und dann Menu Projekt Verweise: Öffnet sich ein fenster mit einem Liste du kannst Micosoft ActiveX Data Objekt 2.1 Library nehmen
und dann
du Brauchst ein Form mit 2 textbox und 2 Button und Hier ist dein beispiel du brauchst noch ein Datenbank der belebegen Name geben kannst unter Microsoft Access mit zwei fehlder ein solte heisen Italienisch und die 2 Deutsch und die tabel kannst du nehnen Wörterbuch aber das ist meien Idee nur du kannst andres nehenen.
und Hier ist das beispiel
Option Explicit
Public ObjCon As ADODB.Connection
Public ObjRs As ADODB.Recordset
Private Sub Command1_Click() '<<
If Not ObjRs.BOF Then
ObjRs.MovePrevious
If Not ObjRs.BOF Then
Text1.Text = ObjRs!italienisch
Text1.Text = ObjRs!Deutsch
End If
End If
End Sub
Private Sub Command2_Click() '>>
If Not ObjRs.EOF Then
ObjRs.MoveNext
If Not ObjRs.EOF Then
Text1.Text = ObjRs!italienisch
Text2.Text = ObjRs!Deutsch
End If
End If
End Sub
Private Sub Form_Load()
If ObjCon Is Nothing Then Set ObjCon = New ADODB.Connection
If ObjRs Is Nothing Then Set ObjRs = New ADODB.Recordset
'>> genau Hier du sollst
' die Name dein Datenbank
ObjCon.Open "Provider =Microsoft.Jet.oledb.4.0; Data source=c:\test.mdb"
ObjRs.Open "select Name,Ort From kundenbetreu", ObjCon, adOpenDynamic, adLockBatchOptimistic, adCmdText
Text1.Text = ObjRs!Name
Text2.Text = ObjRs!ort
End Sub
Viel spass
Also Hallo alle mit einander das macht echt spa? wenn Mann findet auch andre Leute die Ihm Helfen k?nnen und ich habe mich seit ?ber 4 Jahre mit VB besch?ftigt und ich war frustrieret wenn ich eine Problem Hatte die ich nicht l?sen K?nnte mit MSDN
| |
Re: Wörterbuch | | | Autor: dstk | Datum: 09.12.03 16:20 |
| He danke für deine Hilfe aber ich hab das schön gelöst, wie du im oberen Thread vielleicht siehst. Aber ich denke, dass max 1000 Wörter da vorkommen werden und deshalb bin ich mit meiner methode ganz zufrieden. Trotzdem Danke und nichts für ungut
|||10110100011111110011||| | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|