MAV nach Code Säuberung
Übersicht

![]() |
FunctionBauerBetreff: MAV nach Code Säuberung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich arbeite zurzeit an einem Sofware Company Name Generator, der sich an einer Online Wordlist bedient.
Das hat eigentlich alles soweit auch recht gut geklappt, nur der Code war unübersichtlich und unordentlich. Jetzt habe ich ihn einer kleinen Säuberung unterzogen, sprich Variablennamen verbessert, Zeileneinrückungen, sowie in Funktionen aufgeteilt. Wenn ich jetzt das Programm starte bekomme ich sofort eine "Memory Access Violation". Ich finde meinen Fehler nicht. Kann jemand helfen? -> Code: [AUSKLAPPEN] ;-----------Initialisieren&Variablen------------------------
Bibliotheken_Downloaden() Global anzahl_Woerter_der_Bibliotheken% Initialisieren() Dim Woerter_der_Bibliotheken$(anzahl_Woerter_der_Bibliotheken) Dim Wort_Endungen$(11) Bibliotheken_einlesen() ;---------------Hauptprogramm-------------------------------- AppTitle "Software Company Name Generator v1.0" Graphics 800,600 SetBuffer BackBuffer() SeedRnd MilliSecs() ;hauptschleife Repeat Eingabe() Until KeyHit(1) ;----------Funktionen------------------------------------------ Function Eingabe() Local anzahl_woerter% Local anzahl_Woerter_der_Bibliotheken Print "Schreibe 'help' für die Auflistung der Befehle" a$=Input(">> ") Select a$ Case "exit" End Case "lib_update" Bibliotheken_Downloaden() Case "cls" Graphics 800,600 Case "generate" anzahl_woerter = Input("anzahl? ") generate(anzahl_woerter,anzahl_Woerter_der_Bibliotheken) Case "help" Print "Befehle: help - Hilfe, cls - Clear Screen, lib_update - Library Update, gen - Generate" Default Print "unknown expression!" End Select End Function Function Bibliotheken_Downloaden() Local temp_line$, editedstream$ Local offset%, endset% Print "Update Wortbibliotheken..." stream = OpenTCPStream("www.writedesignonline.com",80) If Not stream Print "Konnte keine Verbindung herstellen.":WaitKey:End WriteLine stream,"GET /resources/wordlist.html HTTP/1.1" WriteLine stream,"Host: writedesignonline.com" WriteLine stream,"User-Agent: BB" WriteLine stream,"Accept: */*" WriteLine stream,"" If Eof(stream) Print "Failed." : WaitKey : End file=WriteFile("Wortbibliotheken.dat") ;jede Line auslesen While Not Eof(stream) temp_line$ = ReadLine$(stream) If Instr(temp_line$,"absurd") <> 0 Then ;einzelne Line ueberpruefen Repeat temp_line$ = ReadLine$(stream) ;offset wert des wortes bestimmen For i = 1 To Len(temp_line$) If Mid$(temp_line$,i,1) <> " " Then offset = i Exit EndIf Next ;endset wert des wortes bestimmen For i = offset To Len(temp_line$) If Mid$(temp_line$,i,1) = "<" Then endset = i - offset Exit EndIf Next ;den bestimmten string aus dem stream extrahieren editedstream$ = Mid$(temp_line$,offset,endset) ;in der datei speichern If editedstream$ <> "" And editedstream$ <> " " Then WriteLine(file, editedstream$) EndIf Until Instr(temp_line$,"</TABLE>") <> 0 End If Wend CloseTCPStream stream CloseFile file End Function Function generate(aw,astr) Local Zufallszahl1%, Zufallszahl2% For i = 1 To aw zufallszahl1% = Rand(0,11) zufallszahl2% = Rand(0,astr) genwort$=Woerter_der_Bibliotheken$(zahl2)+" "+Wort_Endungen$(zahl) Print genwort$ Next End Function Function Initialisieren() file=OpenFile("Wortbibliotheken.dat") While Not Eof(file) anzahl_Woerter_der_Bibliotheken = anzahl_Woerter_der_Bibliotheken +1 Wend CloseFile file End Function Function Bibliotheken_einlesen() Local i% file=OpenFile("Wortbibliotheken.dat") While i <> anzahl_Woerter_der_Bibliotheken Woerter_der_Bibliotheken$(i) = ReadLine$(file) i=i+1 Wend CloseFile file Restore string2 For i = 0 To 11 Read Wort_Endungen$(i) Next End Function ;---------------DATA------------------------------------------------------ .string2 Data "Research", "Inc.", "Studio" , "Productions", "Ltd.", "Programs" Data "Ware", "Soft", "Science", "Solutions", ".org", "Unlimited" |
||
Intel Quad Core 6600 Geforce 9500 GT
4 GB DDR-2 RAM 500 GB-Samsung |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Einen MAV erhalte ich nicht, aber an dieser Stelle hast Du eine Endlosschleife gebastelt:
BlitzBasic: [AUSKLAPPEN] Function Initialisieren() Solange Du nichts aus der Datei liest wird der Pointer logischerweise nicht verschoben und Eof nie eintreffen. Um den MAV etwas zu konkretisieren benutze einfach den Debugmodus. Dann wird die Meldung gleich deutlich ausssagekräftiger ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
FunctionBauer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die schnelle Antwort. Aber Debuggen ist eigentlich immer die Lösung auf alle meine Probleme und ich liebe ihn dafür ![]() Aber das mit der Schleife werd' ich mal prüfen ![]() Oke, so gelöst: Code: [AUSKLAPPEN] ...file=OpenFile("Wortbibliotheken.dat")
While Not Eof(file) anzahl_Woerter_der_Bibliotheken = anzahl_Woerter_der_Bibliotheken +1 voidstring$ = ReadLine$(file) Wend CloseFile file End Function ... und trotzdem noch MAV! Hier dokumentiert: MAV trotz Debugger: ![]() |
||
Intel Quad Core 6600 Geforce 9500 GT
4 GB DDR-2 RAM 500 GB-Samsung |
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ist zwar keine Lösung für dein Problem, aber wenn ich anmerken darf: Die Funktion Initialisieren ist unnötig, denn du musst nicht um die Anzahl der Wörter herauszufinden die Datei noch einmal öffnen / durchgehen... Anstattdessen einfach: Code: [AUSKLAPPEN] file=OpenFile("Wortbibliotheken.dat")
While Not Eof(file) Woerter_der_Bibliotheken$(i) = ReadLine$(file) anzahl_Woerter_der_Bibliotheken = anzahl_Woerter_der_Bibliotheken +1 Wend mfg, Tennisball Edit: Ja, wir glauben dir ja, dass du ein MAV bekommst, aber markiert der Debugger nicht irgendeine Zeile? |
||
![]() |
FunctionBauer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Tennisball, klar die Methode hatte ich vorher auch schon und hab es in zwei Funktionen aufgespalten da ich erst den Array 'Woerter_der_Bibliotheken' erstellen kann wenn ich den Array Index weiß. Und diesen finde ich durch die Funktion Initialisieren heraus.
Grüße. Sprich: Code: [AUSKLAPPEN] ...file=OpenFile("Wortbibliotheken.dat")
While Not Eof(file) anzahl_Woerter_der_Bibliotheken = anzahl_Woerter_der_Bibliotheken +1 voidstring$ = ReadLine$(file) Wend CloseFile file... muss vor Code: [AUSKLAPPEN] Dim Woerter_der_Bibliotheken$(anzahl_Woerter_der_Bibliotheken) stehen, weil ich ja sonst den Arrayindex noch nicht weiß.
|
||
Intel Quad Core 6600 Geforce 9500 GT
4 GB DDR-2 RAM 500 GB-Samsung |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group