Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Such-Algorithmus
Gehe zu Seite 1, 2, 3, 4, 5  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 28.07.2014, 19:53    Titel: Such-Algorithmus Antworten mit Zitat

Hallo liebes Forum. Ich habe einen langen Text ohne Zeilenumbruch, den ich auf bestimmte Begriffe in einem gewissen Bereich absuchen möchte. Mit einem Begriff ist das auch kein Problem; ich suche aber zwei Begriffe gleichzeitig und da komm ich einfach nicht weiter. Wäre schön, wenn mir da jemand helfen könnte. Vielen Dank.

Code:

dim as integer f=freefile,i,j,stellen
dim as string suche1,suche2,text
input "Suchbegriffe eingeben: ",suche1,suche2
Kill "Text.txt"
open "Finden.txt" for input as #1
open "Text.txt" for append as #2

line input #f,text
for i=0 to len(text)
if mid(text,i,len(suche1))=suche1 then
   
line input #f,text
for j=i-360 to i+360
if mid(text,j,len(suche2))=suche2 then print #2,mid(text,i-360,i+360):print #2," ":exit for
next j

end if
next i

print #2,""
print #2,"Suchbegriff:  ";suche1,suche2
print #2,"Stellen:     ";stellen
print #2," "
close #1
close #2
shell "START Notepad.exe Text.txt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 28.07.2014, 21:26    Titel: Re: Such-Algorithmus Antworten mit Zitat

Hat sich erledigt; werd das etwa so machen:

Code:

dim as integer f=freefile,i,j,stellen
dim as string suche1,suche2,text
input "Suchbegriffe eingeben: ",suche1,suche2
Kill "Text.txt"
open "Finden.txt" for input as #1
open "Text.txt" for append as #2

line input #f,text
for i=0 to len(text)
if mid(text,i,len(suche1))=suche1 then
   
for j=i to i+360
if mid(text,j,len(suche2))=suche2 then
print #2,mid(text,i-360,720)
print #2,""
stellen=stellen+1
exit for
end if
next j

end if
next i

print #2,""
print #2,"Suchbegriff:  ";suche1,suche2
print #2,"Stellen:     ";stellen
print #2," "
close #1
close #2
shell "START Notepad.exe Text.txt"


Für Verbesserungsvorschläge bin ich aber gerne noch zu haben. zwinkern


Zuletzt bearbeitet von Input am 28.07.2014, 21:59, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4644
Wohnort: ~/

BeitragVerfasst am: 28.07.2014, 21:41    Titel: Antworten mit Zitat

Bin mir nicht ganz sicher, was du mit den zwei Begriffen gleichzeitig meinst - sollen beide Begriffe in derselben Zeile vorkommen? Du kannst auf jeden Fall erst einmal nach dem ersten Begriff suchen, und wenn du ih gefunden hast, nochmal von vorn eine Suche nach dem zweiten Begriff starten (wenn es eine "UND"-Suche sein soll).
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 28.07.2014, 21:51    Titel: Antworten mit Zitat

Ja, es lag wohl an der zweiten Schleife. mit dem Kopf durch die Mauer wollen Danke dir. happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
HorstD



Anmeldungsdatum: 01.11.2007
Beiträge: 110

BeitragVerfasst am: 28.07.2014, 22:05    Titel: Antworten mit Zitat

Sieh' dir mal INSTR an.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 29.07.2014, 05:26    Titel: Antworten mit Zitat

Daran hab ich auch schon gedacht. Das Problem ist halt nur, dass man da mit Absätzen arbeiten muss; und bei grossen Texten hat man da ewig um zu formatieren.

EDIT: So, habs noch etwas verbessert und eine dritte Schleife reingebastelt:

Code:
dim as integer i,j,k,stellen
dim as string suche1,suche2,suche3,text
input "Suchbegriffe: ",suche1,suche2,suche3
Kill "Text.txt"
open "Finden.txt" for input as #1
open "Text.txt" for append as #2
line input #1,text

if suche3="" then
for i=0 to len(text)
if mid(text,i,len(suche1))=suche1 then
for j=i to i+400
if mid(text,j,len(suche2))=suche2 then
print #2,mid(text,i-400,800)
print #2,""
stellen=stellen+1
exit for
end if
next j
end if
next i
end if

if suche3>"" then
for i=0 to len(text)
if mid(text,i,len(suche1))=suche1 then
for j=i to i+400
if mid(text,j,len(suche2))=suche2 then
for k=i to i+400
if mid(text,k,len(suche3))=suche3 then
print #2,mid(text,i-400,800)
print #2,""
stellen=stellen+1
end if
next k
end if
next j
end if
next i
end if

print #2,""
print #2,"Suche:  ";suche1;"  ";suche2;"  ";suche3
print #2,"Anzahl:";stellen
print #2,""
close #1
close #2
shell "START Notepad.exe Text.txt"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4644
Wohnort: ~/

BeitragVerfasst am: 29.07.2014, 12:44    Titel: Antworten mit Zitat

Zitat:
Daran hab ich auch schon gedacht. Das Problem ist halt nur, dass man da mit Absätzen arbeiten muss; und bei grossen Texten hat man da ewig um zu formatieren.

Du liest doch so oder so nur zeilenweise ein (bzw. in diesem Programm sogar nur eine einzelne Zeile), daher sehe ich den Nachteil von INSTR im Vergleich dazu nicht. Wenn es um Geschwindigkeit geht oder um das Suchen in einer gesamten Datei, ohne sie komplett in den Speicher laden zu müssen, müsste man eher auf einen zeichenweisen Vergleich hinarbeiten anstatt auf MID. MID ist halt in dieser massiven Verwendung schon sehr langsam (bei kleinen Datenmengen wird das noch keine Rolle spielen).

Was anderes:
Code:
Kill "Text.txt"
' ...
open "Text.txt" for append as #2

Warum nicht gleich einfach OPEN FOR OUTPUT? Das überschreibt die bestehenden Daten auch. lächeln
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1231
Wohnort: Ruhrpott

BeitragVerfasst am: 29.07.2014, 13:51    Titel: Antworten mit Zitat

Hallo Input! lächeln

Wenn ich mir einige Anmerkungen erlauben darf:

1):
Wenn du
Code:
Open "Text.txt" For Append As #2
durch
Code:
Open "Text.txt" For Output As #2
ersetzt, kannst du dir die Zeile
Code:
Kill "Text.txt"
komplett sparen, denn die Datei wird dann jedesmal neu angelegt.

2):
Das erste Zeichen in einem String hat den Index 1, statt
Code:
For i=0 To Len(text)
müsste es also korrekt heißen
Code:
For i=1 To Len(text)


3):
Code:
stellen = stellen + 1
lässt sich bequemer als
Code:
stellen += 1
schreiben

4):
Einrückungen im Quelltext erleichtern die Lesbarkeit eines Programms ganz enorm, und Kommentare sind sehr hilfreich für dessen Verständnis (auch wenn's zusätzliche Arbeit macht zwinkern )

Außerdem ist es ziemlich ineffektiv, für jede Anzahl von Suchbegriffen einen eigenen Programmabschnitt zu schreiben, besonders, wenn das Ganze durch die Verschachtelung immer komplizierter wird. Hier kannst du besser eine Schleife programmieren, die nacheinander alle Suchbegriffe abarbeitet. Das ist nicht nur übersichtlicher, sondern hat auch den Vorteil, daß du die Zahl der Suchbegriffe sehr leicht variabel machen kannst:
Code:
Dim As Integer x,i,j,stellen
Dim As String text,fund
ReDim As String suche(1)

i = 0
Do 'suchbegriffe eingeben
   i += 1
   ReDim Preserve suche(i)
   Print "Suchbegriff";i;" :"
   Locate CsrLin-1, 17
   Input "", suche(i)
Loop Until suche(i) = ""

ReDim Preserve suche(UBound(suche) - 1) 'letzten arrayplatz löschen

Open "Finden.txt" For Input As #1
Open "Text.txt" For Output As #2
Line Input #1,text

i = 0
Do While InStr(i + 1,text,suche(1)) '1. suchbegriff
   i = InStr(i + 1,text,suche(1)) 'fundstelle merken
   fund = Mid(text,i,400) 'folgende 400 zeichen isolieren
   For x = 1 To UBound(suche) 'nach restlichen begriffen durchsuchen
      j = InStr(fund,suche(x)) 'x. begriff suchen
      If j Then 'begriff gefunden
         i += j 'index aktualisieren
         If x = UBound(suche) Then 'alle suchbegriffe gefunden
            j = i - 400 'index für textbeginn
            If j < 1 Then 'index darf nicht kleiner als 1 sein
               j = 1
            EndIf
            Print #2, Mid(text,j,800) 'gesuchte textstelle in datei schreiben
            Print #2,""
            stellen += 1 'zähler erhöhen
         Else
            fund = Mid(text,i,400) 'textabschnitt für nächsten suchbegriff isolieren
         EndIf
      Else 'begriff nicht gefunden
         Exit For 'suche abbrechen
      EndIf
   Next
Loop 'weitersuchen

Print #2,""
Print #2,"Suche:  ";
For x = 1 To UBound(suche)
   Print #2,suche(x);"  ";
Next
Print #2,"Anzahl:";stellen
Print #2,""
Close #1
Close #2
Shell "START Notepad.exe Text.txt"


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 29.07.2014, 14:02    Titel: Antworten mit Zitat

Vielen Dank euch allen!! happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 29.07.2014, 15:05    Titel: Suche etwas allgemeiner Antworten mit Zitat

Ich hab da mal ein etwas algemeineren Ansatz mit beliebig vielen Suchbegriffen. Letztlich kann man mit diesem Ansatz die Suche von der Darstellung der Ergebnisse besser trennen.

Code:

Function Finde(text As String, muster() As String,positionen() As String,stellen() As Integer,casesensitive As Integer=0) As Integer
   Dim position As Integer
   Dim gesamtstellen As Integer
   If casesensitive = 0 Then
      text=LCase(text)
   EndIf
   
   For i As Integer = LBound(muster) To UBound(muster)
      position = 0
      
      Do
         If casesensitive = 0 Then
            position = InStr(position+1,text,LCase(muster(i)))
         Else
            position = InStr(position+1,text,muster(i))
         EndIf
         
         If position > 0 Then
            stellen(i)=stellen(i)+1
            gesamtstellen = gesamtstellen + 1
            If Len(positionen(i))= 0 Then
               positionen(i) = Str(position)
            Else
               positionen(i) =positionen(i)+";"+Str(position)
            End If            
         EndIf
         
      Loop until position = 0
   Next
   
   Return gesamtstellen
End Function

Sub StarteSuche(textdatei As String,musterdatei As String)
   Dim As Integer tdat, mdat
   Dim text As String   
   Dim textzeile As String
   Dim zeile As Integer
   
   Dim mindex As Integer
   ReDim muster() As String
   ReDim positionen() As String
   ReDim stellen() As Integer
   Dim tmpmuster As String
   
   

   mdat = FreeFile
   Open musterdatei For Input As mdat
   Do Until Eof(mdat)            
      Input #mdat,tmpmuster
      If Len(tmpmuster)>0 Then               
         ReDim Preserve muster(mindex)
         muster(mindex) = tmpmuster
         mindex = mindex+1
      EndIf
   Loop
   
      
   Print "Anzahl der Suchmuster:", UBound(muster)+1
   Print "Suchmuster: ";
   For i As Integer = LBound(muster) To UBound(muster)
      Print muster(i);" ";
   Next
   Print
   Print
   

   tdat = FreeFile
   Open textdatei For Input As tdat
         
   Do Until Eof(tdat)
      Line Input #tdat, textzeile
      zeile = zeile + 1
      text = text + textzeile
      
      'Suche in Textdatei Zeilenweise nach Mustern
      'ohne Groß-und Kleinschreibung zu beachten
      ReDim positionen(UBound(muster)) As String
      ReDim stellen(UBound(muster)) As Integer

      Print "Zeile ";zeile," Fundstelle(n): ";
      Print Finde(textzeile,muster(),positionen(),stellen())
      Print String(40,"-")
      For i As Integer = LBound(muster) To UBound(muster)
         Print "Suchbegriff: ", muster(i)
         Print stellen(i);" Fundstellen: "; positionen(i)
         Print         
      Next            
   Loop
   
   Sleep
   Cls
   
   'Suche in gesamter Textdatei nach Mustern
   'Groß-und Kleinschreibung beachten
   ReDim positionen(UBound(muster)) As String
   ReDim stellen(UBound(muster)) As Integer

   Print "Fundstellen Gesamt: ";
   Print Finde(text,muster(),positionen(),stellen(),1)
   For i As Integer = LBound(muster) To UBound(muster)
      Print "Suchbegriff: ", muster(i)
      Print stellen(i);" Fundstellen: "; positionen(i)
      Print         
   Next         

End Sub

Screen 0
Width 120,60
'shell "START Notepad.exe Muster.txt"
'sleep
StarteSuche "Text.txt","Muster.txt"
Sleep


Text.txt
Code:
Hallo liebes Forum. Ich habe einen langen Text ohne Zeilenumbruch, den ich auf bestimmte Begriffe in einem gewissen Bereich absuchen möchte.
Mit einem Begriff ist das auch kein Problem; ich suche aber zwei Begriffe gleichzeitig und da
komm ich einfach nicht weiter. Wäre schön, wenn mir da jemand helfen könnte. Vielen Dank.


Muster.txt
Code:
Begriffe
Forum
ich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Input



Anmeldungsdatum: 28.07.2014
Beiträge: 59

BeitragVerfasst am: 29.07.2014, 22:33    Titel: Antworten mit Zitat

Hab da mal noch meine "Monster-Version": grinsen

Code:
dim as integer i:dim as string suche,text
do:input "Suche: ",suche:cls
open "Text.txt" for input as #1
line input #1,text:for i=1 to len(text)
if mid(text,i,len(suche))=suche then _
print mid(text,i-400,800):print ""
next i:close #1:loop
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4644
Wohnort: ~/

BeitragVerfasst am: 30.07.2014, 11:07    Titel: Antworten mit Zitat

Ist es eigentlich wirklich Absicht, dass du aus deiner Datei nur eine einzige Zeile (bzw. Absatz ohne Zeilenumbruch) ausliest? Kann ja sein, dass der Text mal mehrere Absätze hat. lächeln

Noch mal zu INSTR (in der Eine-Zeile-Version)
Code:
dim suche as string, text as string, fund as integer
do
  input "Suche: ", suche
  if suche = "" then exit do
  cls
  open "Text.txt" for input as #1
  line input #1, text
  fund = instr(text, suche)
  if fund then print mid(text, fund-400,800) : print
  close #1
loop

Trotz sauberer Zeilenumbrüche und Abbruchbedingung nur unwesentlich länger. grinsen

Allerdings gibt es (in deiner und meiner Version) Probleme, wenn vor der Fundstelle 400 Zeichen oder weniger liegen, also wenn i-400 (bzw. fund-400) kleiner oder gleich 0 ist.


Statt 'INPUT "Suche: ", suche' würde sich wohl auch eher LINE INPUT anbieten, dann kannst du auch nach Kommata suchen.


edit: als Diskussionsbeitrag eine Suchfunktion (bisher nur case sensitive, aber erweiterbar), die nur einen einzigen Durchlauf durch den zu durchsuchenden String vornimmt. Bei einer Suche nach vielen Begriffen gleichzeitig sollte die Funktion wesentlich effektiver als INSTR sein; für Verbesserungsvorschläge und Hinweise auf Fehler bin ich aber natürlich offen. lächeln (Ich fürchte ja, dass es etwas in dieser Art im Portal schon das ein oder andere Mal gibt. happy )
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1231
Wohnort: Ruhrpott

BeitragVerfasst am: 31.07.2014, 05:46    Titel: Antworten mit Zitat

Nur mal am Rande: Mit
Code:
Open "Textl.txt" For Binary Access Read As #1
text = Input(Lof(1),#1)
lässt sich eine Datei auch dann in einen einzigen String einlesen, wenn sie Zeilenumbrüche enthält.

@nemored / Suchfunktion: Ich glaube, viel besser kann man es nicht machen. Und was die case sensitivity (tolles Wort grinsen ) betrifft, so kann man ja sowohl den Text als auch die Suchbegriffe vom aufrufenden Programm aus als lowcase übergeben.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 31.07.2014, 08:02    Titel: Antworten mit Zitat

Du solltest dir von Anfang einen Programmierstil angewöhnen, der möglichst sauber ist, sodass man / du auch Jahre später schnell versteht worum es geht.

z.B. ist mir jetzt an meinem Code aufgefallen, dass ich etwas ungenau war. Im Prinzip möchte man Fehler vermeiden, indem komplexe Dinge in Funktionen gekapselt werden. Dabei sollte eine Funktion niemals zu komplex werden. Dazu hilft es Sie aufzuteilen, sobald sie nicht mehr ganz auf den Bildschirm passt. Einrückungen und pro Zeile eine Anweisung sind dabei Grundvoraussetzung Fehler zu vermeiden.

Ich habe das ReDim von positionen() und stellen() dem Aufrufer überlassen. D.h. Funktion Finde() setzt Dinge voraus. Es findet aber keine Überprüfung dieser Voraussetzungen statt. Besser ist also dass ReDim in die Funktion zu verlagern.

Code:
   If UBound(muster)<0 Then
      Return 0
   EndIf   
   ReDim positionen(UBound(muster)) As String
   ReDim stellen(UBound(muster)) As Integer


Das ganze müsste man weiter spinnen. Ich habe die Eingabe, also das Lesen der Daten aus der Datei und die Ausgabe also das Anzeigen der Suchergebnisse in eine einzige Funktion getan. Besser wäre es gewesen diese beiden Schritte in SUBs/FUNCTIONS aufzuteilen.

Dann wird man auch flexibler, weil man ja vielleicht auch andere Eingabe und Ausgabe Möglichkeiten haben möchte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1231
Wohnort: Ruhrpott

BeitragVerfasst am: 31.07.2014, 16:36    Titel: Antworten mit Zitat

RockTheSchock hat Folgendes geschrieben:
Dazu hilft es Sie aufzuteilen, sobald sie nicht mehr ganz auf den Bildschirm passt
Man sollte es aber auch nicht übertreiben. Das mutwillige Zerfasern eines Programms erhöht nicht unbedingt dessen Lesbarkeit. Zumal auch jeder Prozeduraufruf Ressourcen kostet...

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
RockTheSchock



Anmeldungsdatum: 04.04.2007
Beiträge: 138

BeitragVerfasst am: 31.07.2014, 19:03    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Man sollte es aber auch nicht übertreiben. Das mutwillige Zerfasern eines Programms erhöht nicht unbedingt dessen Lesbarkeit. Zumal auch jeder Prozeduraufruf Ressourcen kostet...

Da hast du natürlich Recht!
Solange man aber nicht Aufrufe eines 2-Zeilen-Unterprograms in die innerste Schleife bei einer iterativen Berechnung packt, ist der Ressourcen-Aufwand vernachlässigbar. Der liegt in der Regel bei wenigen Byte + ein paar Taktzyklen. Du wirst mir aber sicher zustimmen, dass Funktionen, oder auch das Hauptprogramm als Richtwert maximal eine Seite also etwa 50 Zeilen lang sein sollten, damit man den Überblick nicht verliert.

Außerdem sollte man Redundanz vermeiden. Immer da wo man Teile seines Programms per Copy and Paste kopiert und nur leicht abgeändert einfügt, kann man das mit Prozeduren besser lösen. Ich mach das allein schon aus Faulheit, weils kürzer ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1231
Wohnort: Ruhrpott

BeitragVerfasst am: 02.08.2014, 17:09    Titel: Antworten mit Zitat

Das Argument mit dem Ressourcenverbrauch ist -zugegeben- wirklich ein wenig an den Haaren herbeigezogen. lächeln

Ich habe mir aber, ehrlich gesagt, noch nie irgendwelche Gedanken über eine bestimmte Zeilenanzahl gemacht. Wenn der Quelltext übersichtlich ist und sich gut lesen lässt, ist es gut, wenn nicht, ist es schlecht und muß verbessert werden. Beispielsweise erhöht es die Übersichtlichkeit enorm, wenn man einzelne Sinnabschnitte durch eine Leerzeile optisch voneinander trennt (oder bei Bedarf auch durch zwei Leerzeilen oder eine Sternchenreihe). Was da im einzelnen sinnvoll ist, hängt auch von der Aufgabenstellung ab oder davon, ob man alleine oder zu mehreren an einem Programm arbeitet.

Mit dem "mutwilligen Zerfasern" hatte ich die Unart einiger (C-)Programmierer im Hinterkopf, ein Programm auf 30 oder 40 (weitgehend unkommentierte) Minidateinen zu verteilen, deren gegenseitige Abhängigkeiten für einen Aussenstehenden kaum zu durchschauen sind. Als abschreckendes Beispiel kannst du dir einmal den Quellcode von Winamp ansehen. mit den Augen rollen

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.08.2014, 20:07    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:

Mit dem "mutwilligen Zerfasern" hatte ich die Unart einiger (C-)Programmierer im Hinterkopf, ein Programm auf 30 oder 40 (weitgehend unkommentierte) Minidateinen zu verteilen


Dann schau dir bloß nicht Java an, da wirst du gezwungen, sowas zu tun. lachen

Außerdem: Seit wann ist Winamp OSS?
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1231
Wohnort: Ruhrpott

BeitragVerfasst am: 02.08.2014, 21:45    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
Dann schau dir bloß nicht Java an
Bis jetzt habe ich mich erfolgreich davor gedrückt... zwinkern

Jojo hat Folgendes geschrieben:
Seit wann ist Winamp OSS?
Upps, jetzt hast du mich erwischt! Gnade, Gnade! Ich meinte das Winamp SDK. Ist ja auch ne Art Quellcode...

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 03.08.2014, 13:42    Titel: Antworten mit Zitat

Das Winamp-SDK mag jetzt nicht das schönste sein, aber es ist eigentlich sinnvoll unterteilt - nämlich in unterschiedliche Funktionalitäten. Es wird nur das eingebunden, was man wirklich braucht. Aber das scheint ja bei (Free)BASIC-Menschen verpönt zu sein, wo die Grafikbefehle jederzeit im globalen Namespace verfügbar sein müssen, egal ob man nun ein Programm mit FBGFX-Grafikausgabe schreibt oder nicht... mit den Augen rollen
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2, 3, 4, 5  Weiter
Seite 1 von 5

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz