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:

Datei Kopieren Fehler?!

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Exp-Soft



Anmeldungsdatum: 10.09.2004
Beiträge: 79

BeitragVerfasst am: 28.09.2004, 20:09    Titel: Datei Kopieren Fehler?! Antworten mit Zitat

Code:

open quelle$ for binary as #1
open ziel$ for binary as #2
get #1, einbyte$
put #1, einbyte$
do
get #1, einbyte$
put #2, einbyte$
loop until eof(1)
close


bei get kommt unverträgliche datentypen wieso? sollte doch richtig sein oder? quelle ist eine BMP Datei

Thx 4 Help schonmal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 28.09.2004, 20:14    Titel: Antworten mit Zitat

Weils beim ersten Put nicht #1, sondern #2 heißen muss lächeln
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Exp-Soft



Anmeldungsdatum: 10.09.2004
Beiträge: 79

BeitragVerfasst am: 28.09.2004, 20:16    Titel: Antworten mit Zitat

Tippfehler von mir ist #2 also, so gesehn sollte der Code eigentlich funzen, liegt es ggf. an Windows NT?! bzw. XP?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 28.09.2004, 20:20    Titel: Antworten mit Zitat

Ja, und außerdem musst du vor dem Code-Block noch schreiben
Code:
EinByte$=space$(1)


dann müssts gehen.

Allerdings verstehe ich nicht, was die ersten beiden GET-PUTs sollen lächeln

Achja: Und es muss heißen:
Code:
GET #1, , EinByte$
PUT #2, , EinByte$

also 2 Kommas.

Grüßle,
Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Exp-Soft



Anmeldungsdatum: 10.09.2004
Beiträge: 79

BeitragVerfasst am: 28.09.2004, 20:24    Titel: Antworten mit Zitat

Ja nu gehts, ich weiß ja net wer für die QB Monsterfaq zuständigt ist aber dieser auszug ist dann falsch.

Zitat:

*** Methode 2: Byteweises Kopieren über binäre Datei
Eine primitive Methode, das Kopieren einer Datei zu beschleunigen, ist das
byteweise Kopieren mit Hilfe einer binären Datei. Das funktioniert wie folgt:
open quelle$ for binary as #1
open ziel$ for binary as #2
do
get #1, einbyte$
put #2, einbyte$
loop until eof(1)
close


Mit FertigAnteil! = LOC(1) / LOF(1) kannst Du herausbekommen, wie weit der
Kopiervorgang bereits fortgeschritten ist. (0 < FertigAnteil! < 1)

Aber auch diese Methode läuft immer noch noch grottenlangsam!! Kopiert mir bitte
einmal einen CD-Audio-Track (.WAV-Datei) mit dieser Methode... zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 29.09.2004, 11:57    Titel: Antworten mit Zitat

Ist es wirklich schneller eine Datei in Ein-Byte-Stücken zu kopieren? Wie wäre es denn wenn man 4 oder so nimmt, ist das dann wirklich langsamer?
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 29.09.2004, 12:23    Titel: Antworten mit Zitat

Ja, da hast du völlig recht. Wenn man z.B. immer gleich 3200 Bytes einliest und diesen String dann eventuell mit ner For-Next-Schleife und MID$ wieder in einzelbytes zerlegt ist das viel schneller.

Und das Kopieren natürlich auch lächeln
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 29.09.2004, 13:06    Titel: Gepuffertes Kopieren Antworten mit Zitat

Hi!

Hurra, "Gepuffertes Kopieren & Mergen" ist eine meiner Lieblingssachen in QB. grinsen grinsen grinsen

Code:
SUB FastFileCopy (From$, To$, PufferSize%)
DIM teil AS INTEGER
teil = PufferSize%
OPEN From$ FOR BINARY ACCESS READ AS #1
OPEN To$ FOR BINARY ACCESS WRITE AS #2
bytes$ = ""
DO UNTIL LOC(1) = LOF(1)
IF LOF(1) - LOC(1) < teil THEN
bytes$ = SPACE$(LOF(1) - LOC(1))
ELSE
bytes$ = SPACE$(teil)
END IF
GET #1, , bytes$
PUT #2, , bytes$
LOOP
CLOSE #1
CLOSE #2
END SUB


Ist jetzt nicht getestet, aber sollte funktionieren. (Hab ich jetzt im phpBB Eingabefeld geschrieben. zwinkern )

edit: Beim Cargu-Quiz 1.4 werden auch vor jedem Start innerhalb von Sekundenbruchteilen mehrere MB entpackt. Ungepuffert, also mit 1 Byte oder so würde das fast Minuten dauern.

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Exp-Soft



Anmeldungsdatum: 10.09.2004
Beiträge: 79

BeitragVerfasst am: 29.09.2004, 15:17    Titel: Antworten mit Zitat

Für meine sache reicht aber ein Byte kopieren zwinkern P.s. ändert das mal jemand in der Monster FAQ ab, was sollen denn die Newbies von halten wenn die codes net ma gehen grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 29.09.2004, 15:43    Titel: Haha! Antworten mit Zitat

Hallo.

Das weiß ich schon lange:
http://212.168.28.138/cgi-bin/forum/forum.pl?Imsg=29706 cool cool cool

Lässt man das $ weg, ist es automatisch Single, das bedeutet: 4 Bytes auf einmal kopieren. Dann geht das Beispiel zwar, hat aber den weniger schönen Nebeneffekt, dass die Datei dann aufgefüllt wird.
Hat die Datei 3998 Bytes, so wird die Zieldatei 4000 Bytes haben, weil so immer nur in 4er Schritten gelesen und geschrieben wird. Ist aber eine Lapalie. Den Dateien machts nichts.

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5895
Wohnort: Deutschland

BeitragVerfasst am: 29.09.2004, 15:48    Titel: Kleine Dateien Antworten mit Zitat

Hallo.

Selbst bei kleinen Dateien macht das gepufferte Kopieren Sinn, da diese dann sogar auf einmal kopiert werden können. Es sind also nicht mehrere GET/PUT Vorgänge nötig.

Viele Grüße!
Sebastian
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Exp-Soft



Anmeldungsdatum: 10.09.2004
Beiträge: 79

BeitragVerfasst am: 29.09.2004, 20:38    Titel: Antworten mit Zitat

Aber genau das ist ja der sinn daran bei mir lächeln ich brauch mehrere get Put anweisungen happy

Sagen wir mal so hat auch noch mit einen effekt, das das Prg auf Super Rechnern net so rennen tut naja nachteil das man auf nem P 75 mit 32 MB Ram etwas länger braucht, aber egal.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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