VB/Vba Fragen zu FreeFile

hallo Wissende,

meistens mache ich anfangs des Codes Close und wenn ich dann zwei dateien öffnen will ist die erste #1, die zweite #2.

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?

FreeFile liefert 0-255 zurüch und FreeFile(1) 256-511.
Ist das jetzt nur eine Erweiterung weil 255 zuwenig war oder etwas mir Unbekanntes?

Und wie macht man das professionell wenn man da 100 Dateien öffnen muß um zwischen denen Daten zu verschieben?
Erst FreeFile für das erste Open, in der Zeile nach dem Open dann FreeFile für das zweite usw-?

Oder erstmal am Codeanfang ein Close, dann das erste Open mit #1 starten usw., Schleife oder so.

Und was macht man wenn man 400 dateien gleichzeitig öffnen will?
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.

Und last but not least, was passiert wenn ich 512 dateinen gleichzeitig geöffnet haben muß?

Und grundsätzlich gefragt, ist anfangs des Codes ein Close zu setzen und dann zu nummerieren

a) ein immer sicherer Weg
b) ein sauberer?

Danke für eure Gedanken im Vorhinein
Gruß
Reinhard

Hallo Reinhard,

FreeFile liefert 0-255 zurüch und FreeFile(1) 256-511.

Ist das jetzt nur eine Erweiterung weil 255 zuwenig war oder
etwas mir Unbekanntes?

Dazu habe ich das hier gefunden:
http://www.vbarchiv.net/commands/cmd_freefile.html
Ob das allerdings nur eine Konvention ist oder technische Gründe hat - keine Ahnung.

Gruß, Andreas

FreeFile liefert 0-255 zurüch und FreeFile(1) 256-511.

http://www.vbarchiv.net/commands/cmd_freefile.html

Ob das allerdings nur eine Konvention ist oder technische
Gründe hat - keine Ahnung.

Hallo Andreas,

danke für deine Mühe, aufgrund deines Links habe ich nochmal bei F1 geschaut, siehe da, bei einem Klick mehr im Text der Erklärung zu FreeFile hätte ich Blindfuisch auch das mit der anderen Anwendung gesehen :frowning:

Jetzt fehlen mir natürlich die Inseiderkenntnisse wie das eigentlich GENAU läuft mit Datinummern Open usw.

Aber das sieht schon so aus nach komplizioert und Riesenerklärungstexten auch noch in Englisch, also sag ich mal das mit der 1 bei FreeFile(1) ist für mich erledigt.

Offen bleiben noch die anderen Fragen sofern verständlicher rübergekommen.

Gruß
Reinhard

Hallo Reinhard,

Aber das sieht schon so aus nach komplizioert und

Riesenerklärungstexten auch noch in Englisch, also sag ich mal
das mit der 1 bei FreeFile(1) ist für mich erledigt.

Welche englischen „Riesenerklärungstexte“ meinst du? Kannst du mal zeigen? Vielleicht kann ich das ein oder andere übersetzen.

Offen bleiben noch die anderen Fragen sofern verständlicher
rübergekommen.

Vielleicht oute ich mich jetzt als völliger Laie mit meiner Frage:
Wer hat denn schon hunderte von Dateien gleichzeitig auf? So weit ich zurückdenken kann, habe ich nie mehr als 3 oder 4 gebraucht.

Gruß

Reinhard

Auch Gruß,
Andreas

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 :wink:
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 :wink:

Aber ein kleiner Test, sollte dies ja zeigen um meine Erinnerung stimmen :smile:

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 :wink:

So nun aber nochmal kurz zu Deinen Fragen :wink:

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 :smile:

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 :wink:

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 :wink:

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 :wink:

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

Aber das sieht schon so aus nach komplizioert und

Riesenerklärungstexten auch noch in Englisch, also sag ich mal
das mit der 1 bei FreeFile(1) ist für mich erledigt.

Welche englischen „Riesenerklärungstexte“ meinst du? Kannst
du mal zeigen? Vielleicht kann ich das ein oder andere
übersetzen.

Hallo Andreas,

sorry, hab mich da mißverständlich ausgedrückt, diese engl. Erklärungstexte habe ich (noch) gar nicht, das war/ist nur meine theoretische Befürchtung daß ich auf so Texte stoßen KÖNNTE bei Recherchen :smile:

Gruß
Reinhard