Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » C++ Verzeichnis Auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.06.2003, 09:57 Uhr
ai-tee



Hallo ihrs,

wer meine anderen Threads schon kennt, weiss worum es geht ...
ich hatte mal gefragt, wie ich mit FindFirstChangeNotification rausbekommen kann, welche Datei denn den Event ausgelöst hat.
Als Vorschlag wurde gemacht, dass ich einfach vorher und nachher das Verzeichnis auslese und Vergleiche ...

nunja, mir ist aufgefallen das geht so nicht.
Mein Programm soll immer als Dienst laufen. D.h. es liest das Verzeichnis ein und wartet dann ab ... Stunden ... Tage ... Wochen ... so lang, bis eine Datei ins Verzeichnis geschrieben wurde ... sprich wärend der gesamten Zeit, habe ich die Daten, die ich ausgelesen habe im Speicher ... mein Test war mit 15 Dateien und der verbrauchte Speicher ist von 630 KB auf knapp 2K KB gewachsen. Das Verzeichnis soll zwar eigentlich leer sein, aber ich will ja auch für alle Eventualitäten programmieren. Mal angenommen, in dem Verzeichnis befinden sich jetzt 5000 Dateien. Jeder Dateiname ist 15 zeichen lang ... ohjee ...

Erkennt ihr mein Problem? Ich benötige irgendeine andere Idee ... aber so wie ich das sehe, ist das so nicht umsetzbar ... ich müsste irgendwie direkt aus FindFirstChangeNotification herausbekommen welche Datei den Eventhandler ausgelöst hat ...

???????????????????????????


--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.06.2003, 10:07 Uhr
ai-tee



Hmm ... ich könnte natürlich alles in ein File schreiben ... dann wär das Speicherproblem nicht mehr nennenswert ... scheint mir aber etwas umständlich ... verdammt es muss doch eine Funktion geben, die mir bescheid sagt: Achtung ein File wurde ins Dir geschrieben: <Filename.Suffix>

??????????


--
Greetz, ai`tee

Dieser Post wurde am 05.06.2003 um 10:07 Uhr von ai-tee editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.06.2003, 11:10 Uhr
ao

(Operator)


Wenn das so selten vorkommt, daß mal jemand was in dein Verzeichnis kopiert, dann kannste auch die Liste mit den Namen in eine Textdatei auslagern und bei Bedarf zurückholen.

Oder eine Mischform: nach jeder Änderung bleibt die Liste für X Minuten im Arbeitsspeicher, für den Fall, daß noch was nachkommt. Danach ab auf die Platte damit.

Und wieso brauchst du so irrsinnig viel Speicher für 15 Dateinamen, wenn jeder Name nur 15 Zeichen lang ist? Da würd ich mal nachforschen.


Zitat:
Mal angenommen, in dem Verzeichnis befinden sich jetzt 5000 Dateien. Jeder Dateiname ist 15 zeichen lang ... ohjee ...


... dann sind das 75000 Bytes, plus ein bißchen Verwaltungsinfo immer noch unter 100 K. Ist doch ein Klacks heutzutage.

Gib doch nicht so schnell auf. Dein Algorithmus funktioniert, und das ist schon mal ziemlich wichtig. Bevor du nach einem neuen schreist, stell fest, warum es hakt.

Beim Speicherverbrauch mußt du nachforschen: Steigt er linear mit der Anzahl der Dateien? Dann hast du bestimmt irgendwo einen Fehler gemacht, 100 K belegen für 15 Bytes Nutzdaten, das kann nicht sein, es sei denn, du speicherst die gemalten Buchstaben als Bitmap ;-) .

Vielleicht hast du ein Leck? Wird der Speicher am Programmende wieder freigegeben oder ist er verloren (Task-Manager)?

Oder wird einmal ein großer Klotz belegt und dann mit jedem neuen Namen nur noch ganz wenig? Das wär dann nicht besonders fein, aber noch OK.

Nur mal so als Anregung.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.06.2003, 11:31 Uhr
ao

(Operator)



Zitat:
ai-tee postete
scheint mir aber etwas umständlich ... verdammt es muss doch eine Funktion geben, die mir bescheid sagt: Achtung ein File wurde ins Dir geschrieben: <Filename.Suffix>



Nicht im Win-API, soviel ich weiß.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.06.2003, 11:42 Uhr
ai-tee



Hmm ich habe es jetzt ausgiebig getestet. Aber die Ergebnisse sind merkwürdig.

Beim Programmstart habe ich 1572 KB in den Speichergeladen.
Wenn ich die Variable mit jeweils 100 Dateien (mit 22 Zeichen) fülle ergibt sich folgender Anstieg:

1. + 100 = 1676 KB
2. + 100 = 1684 KB
3. + 100 = 1684 KB <- ??
4. + 100 = 1692 KB

Bei insgesamt +1000 Dateien mit je 22 Zeichen in der Variable sind dass nur 1708 KB

Nicht linear sondern kleiner werdender Speicherverbrauch???

Naja wie auch immer ... ist jedenfalls nicht kritisch ... dann hab ich bei 10.000 Dateien oder 20.000 Dateien was im Prinzip ja sicher niemals passieren wird allerhöchstens ein paar hunder KB mehr ...

Danke für die Anregung
--
Greetz, ai`tee
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: