Hallo Reinhard,
was verstehst Du denn an FreeFile nicht? Den Sinn von den Parametern mit 0 und 1 weisst Du?
Auch haette ich noch eine kleine Anmerkung
Reinhard wenn du ein Programm entwickeln möchtest, wo du mehr als 255 Dateien gleichzeitig offen haben musst, sorry aber dann stimmt etwas an dem Konzept nicht, welches man wiederrum überdenken sollte!
Gib mir mal nur ein Bsp. wo dies der Fall ist und ich gebe Dir Brief und Siegel das ich Dir eine Alternative aufweise, wo du nicht so viele Dateien auf einmal auf haben musst.
Auch ist die Zeit von VB6 schon eine kleine Weile her und so genau kenne ich nun auch nicht alle Parameter etc. Aber du öffnest ja eine Datei alla
Open Dateiname for Input(Output, Random etc.) as Dateinummer
Ich daechte auch mich zu erinnnern das VB es nicht schafft mehr als 255 Dateien zur gleichen Zeit zu öffnen
Aber ein kleiner Test, sollte dies ja zeigen um meine Erinnerung stimmen
So Reinhard, wo hast Du nun genau Probleme und was verstehst du daran nicht? Aber selbst und wenn meinst du nicht, das es mehr bringt wenn Du Dir mal das Framework anschaust? Früher oder später wird VBA auch darauf aufbauen und dann ist das wissen aus VB6 Zeiten obsolete
So nun aber nochmal kurz zu Deinen Fragen
meistens mache ich anfangs des Codes Close und wenn ich dann
zwei dateien öffnen will ist die erste #1, die zweite #2.
Warum am Anfang des Codes ein Close?
Auch gehst du nie den Weg mittels as #1 und as #2 sondern eher
Dim FnrOne as Integer=Freefile(0 oder 1) 'Je nachdem was du brauchst
Open Dateinummer For DeinModus as FnrOne
Dim FnrTwo as Integer=Freefile(0 oder 1) 'Je nachdem was du brauchst
Open Dateinummer For DeinModus as FnrTwo
'Schliessen dann mittels
Close(Dateinummer) ' Schliesst die einzelne Datei
Close ' Schliesst alle Dateien
Jetzt habe ich zum ersten Mal FreeFile bei zwei Dateien
getestet.
Bei einer datei schon vorher problemlos.
Code sagt mehr als Worte:
DatZ = Freefile
DatQ = Freefile
Open „c:\test\probst\Kapitel.html“ For Output As #DatZ
Open „c:\test\probst\original.html“ For Input As #DatQ
Beim zweiten Open kam: „datei schon geöffnet“. Okay, okay,
dadurch hab ich das kapiert und dann umgestellt z:b: zu
DatZ = Freefile
Open „c:\test\probst\Kapitel.html“ For Output As #DatZ
DatQ = Freefile
Open „c:\test\probst\original.html“ For Input As #DatQ
Schon klar, kein Thema bisher. Wie ich so bin habe ich
diesmal gründlich bei FreeFile in der Hilfe nachgelesen.
Mag mir bitte mal jmd. erklären was es mit FreeFile was ja
wohl FreeFile(0) bedeutet und FreeFile(1) auf sich hat?
Einmal ist die Datei dann gesperrt für andere Anwendungen und einmal nicht!
FreeFile liefert 0-255 zurüch und FreeFile(1) 256-511.
Richtig! Anhand dieser Nummer weiss VB wie es mit der Datei umgehen muss. Sprich sperren für andere Anwendungen oder nicht
Ist das jetzt nur eine Erweiterung weil 255 zuwenig war oder
etwas mir Unbekanntes?
Etwas unbekanntes. VB kann soweit ich mich erinnere eh, nur 255 Dateien zur gleichen Zeit verwalten!
Und wie macht man das professionell wenn man da 100 Dateien
öffnen muß um zwischen denen Daten zu verschieben?
100 sind weniger als 255. Also Problemlos möglich! Wenn du nun sagst, hey dann nehmen wir halt 1000, dann kommt die Frage, wie du was verschieben willst!
Erst FreeFile für das erste Open, in der Zeile nach dem Open
dann FreeFile für das zweite usw-?
Genau und das Dynamisch in einer Schleife
Oder erstmal am Codeanfang ein Close, dann das erste Open mit
#1 starten usw., Schleife oder so.
Nein, die Dateinummer IMMER mit Freefile ermitteln!
Und was macht man wenn man 400 dateien gleichzeitig öffnen
will?
Wozu sollte man 400 Dateien offen halten? VB kann m.E. max. 255 Dateien zur gleichen Zeit handeln
Sicher, wenn das eine Schleife ist kann ich das schon so
machen daß das klappt mict FreeFile(x) und x ist dann 0 oder
1, das krieg ich schon hin.
0 oder 1 je nach Anforderung / Sicherheit
Und last but not least, was passiert wenn ich 512 dateinen
gleichzeitig geöffnet haben muß?
Dann kannst du nicht auf VB6 zurückgreifen! Aber wozu will man so viele Dateien offen halten? Sag mir bitte nur 1 Bsp.!
Und grundsätzlich gefragt, ist anfangs des Codes ein Close zu
setzen und dann zu nummerieren
Wozu das Close? Close nimmst du nur wenn du Files offen hast und diese schliessen willst! Beim Programstart ist logischerweise keine Datei offen! Einen Sinn würd es beim beenden geben!
a) ein immer sicherer Weg
b) ein sauberer?
Ich nehme Antwort C. Ein Überflüssiger, ressourcen verschwendender der die Performance beeinflusst!
Danke für eure Gedanken im Vorhinein
Gruß
Reinhard
MfG Alex