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:

ständigen festplattenzugriff halbwegs schnell realisieren?

 
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
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 12.05.2008, 14:54    Titel: ständigen festplattenzugriff halbwegs schnell realisieren? Antworten mit Zitat

hi

Code:

dim as string a,b
dim as integer bla,i

for i=1 to len(a)-3
 bla=instr(b,mid(a,i,3))
 if bla then exit for
next


was hier mit strings gemacht wird, würde ich gerne mit dateien > 1GB machen (lassen sich nicht als ganzes in den ram laden ...)

gibt es dafür irgendeine halbwegs schnelle lösung?

oder muss er bei jedem for-durchgang wieder einen teil einlesen
und dann die andere datei komplett nach dem teil absuchen?
wäre cool wenn ihr mir da helfen könntet...

MFG
flo
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


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

BeitragVerfasst am: 12.05.2008, 15:28    Titel: Antworten mit Zitat

Wenn die Datei nicht in den Cache passt, kannst du da nicht viel machen, außer sie stückchenweise mit SEEK bzw GET/PUT einzulesen.
_________________
» 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
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 12.05.2008, 20:08    Titel: Antworten mit Zitat

Hier wäre noch gut, die eigentlich beabsichtigte Aufgabe besser zu umschreiben. Offensichtlich scheint Dein Ziel zu sein, aus zwei Strings bzw. sogar zwei (grossen!) Dateien eine gemeinsame 3er-Zeichensequenz zu finden.

Lösungsansatz, falls eine derartige 3er-Suche wirklich Dein alleiniges Ziel darstellt: Datei a öffnen, eine Art Index generieren. Grundidee: Sei der Inhalt von a
Code:
aabaacaabaacaaca

Dann stellst Du selber fest, dass hier nur
Code:
aab
aba
baa
aac
aca
caa

als unterschiedliche 3er-Sequenzen existieren. Natürlich hat das Ganze als Baumstruktur (Index!) in Speicher aufgebaut zu werden, also
Code:
+a+a+b
| | +c
| +b-a
| +c-a
+b-a-a
+c-a-a

Ein solcher Baum lässt sich übrigens relativ einfach während des sequenziellen Einlesens von Datei A bilden. Anschliessend musst Du nur noch B öffnen, ebenfalls nur ein einziges Mal sequenziell durchlesen, dabei lediglich feststellen, ob der String einem Baumzweig entspricht, womit Du TRUE (-1) zurückgeben kannst, andernfalls FALSE (0).

Übrigens Google arbeitet ähnlich mit solchen Bäumen, sonst könnten deren Server gar nicht eine derartige Flut von weltweit eintreffenden Suchanfragen täglich bei so kurzer Antwortszeit bewältigen!
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 13.05.2008, 13:53    Titel: Antworten mit Zitat

@dreael: ich versuche, bei string1 und string2 eine übereinstimmung zu finden

also bei
HALLOBLUBBXYZ12345
und
BLAXYZ12345

soll er erkennen, dass ab position 6 in string eins und pos. 4 in string 2 beide übereinstimmen (ab da ist bei beiden XYZ12345)

und das möglichst schnell

ein index würde wahrscheinlich zu lang dauern, weil er ihn immer komplett erstellen muss, auch wenn beim zweiten durchlauf schon eine übereinstimmung da wäre...
außerdem, bei 2GB dateien einen index oO?


MFG
flo
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 13.05.2008, 17:34    Titel: Antworten mit Zitat

Im Prinzip suchst Du ein Stück weit nach einem Synchronisationalgorithmus, wie ihn das UNIX/Linux-Utility
Code:
diff

kennt. Dort haben wir auch das Problem, wenn Datei A eine Anzahl zusätzlicher Zeilen an einer bestimmten Stelle enthält, der Leser sich bei beiden zu vergleichenden Dateien wieder synchronisieren kann. Meines Wissens wird dort mit einer Art Fensterbereich verwendet, innerhalb dessen wieder eine Übereinstimmung gefunden werden muss.

Sonst zu Deinem Fall zurück: Mit Vorteil einmal noch etwas mehr vom drum herum liegenden Problem (Umfeld) mitteilen, denn häufig lassen sich viel einfachere Lösungen finden, wenn man das Umfeld kennt. Fragen gleich von mir:
- Soll die Suche auf Übereinstimmungen auf zwei Dateien angewendet werden und beide Dateien können ohne Weiteres derart gross sein, dass sie temporär nicht in den Arbeitsspeicher passen?
- Sind die Dateien Binärdateien, wo sämtliche Octets von CHR$(0) bis CHR$(255) vorkommen können oder sind es nur Textdateien mit ganz bestimmten Zeichen? Letzteres macht den Indexbaum vom Speicherbedarf her massiv kleiner, da ich nicht für alle 256 Codepositionen einen Fortsetzungszeiger benötige!
- Evtl. uns noch etwas mitteilen, was für Dateien dies sind (z.B. ob zwei grosse PAGEFILE.SYS aus Windows-Systemen, ISO-Dateien ab dem Internet oder sonst etwas).
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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
Seite 1 von 1

 
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