Sida 1 av 2
filhantering i qb?
Postat: 13 juli 2006, 12:45:12
av grym
håller på att rensa i testprogrammet för adkortprojektet som är i en annan tråd
en sak tar onödigt lång tid i qbasic, och det är att kopiera en fil
har kollat och provat men hittar inget vettigt sätt att automatiskt kopiera en fil i qb eller gå ut i dos, kopier och tillbaka utan att röra tangentbordet, missar säkert något riktigt självklart
och , nix, inga andra programspråk, jag kommer fortsätta annvända qb, programmet ändras vartefter mätningarna utförs och det fungerar mycket bra

Postat: 13 juli 2006, 13:25:58
av sodjan
SHELL "COPY en_fil en_ny_fil" ?
Postat: 14 juli 2006, 00:25:58
av grym
ger det jobbiga "press any key to continue"
svårt att automatisera filkopieringen
Postat: 14 juli 2006, 00:42:44
av sodjan
Är det QB eller COPY som ger det meddelandet ?
Om det är COPY, prova med :
SHELL "COPY en_fil en_ny_fil /Y"
/Y Suppresses prompting to confirm you want to overwrite an
existing destination file.
Om det nu var *det* problemet...

Postat: 14 juli 2006, 00:48:33
av grym
den gör vad den ska , kopierar filen och sedan vill den tillbaka till qb programmet men vill först ha en knapptryckning
basic är suveränt för att göra program man ska ändra i hela tiden men filhanteringen är usel,
Postat: 14 juli 2006, 00:53:51
av Jeppsson
För länge sedan när man jobbade i DOS så vet jag att det fanns något man kunde skriva efter vissa kommando för att slippa svara på bekräftningsfrågor...
Man kunde skriva typ "format c: /autotest" och då slapp man svara på alla jobbiga kontroll frågor, den formatera bara på...
Just detta kommado skall man inte prova...
Men din filkopiering i shell/dos-promt kanske kan fungera utan kontrollfrågor!
"COPY en_fil en_ny_fil /autotest"
Meddela om det fungerar eller ej, annars får man börja fintänka lite igen

Postat: 14 juli 2006, 07:16:14
av Greensilver
Jag använder mig av:
FileCopy source, destination
Postat: 14 juli 2006, 10:46:25
av JimmyAndersson
Jag hittade v1.01 av FileCopy. Du kanske har en nyare, men denna klarar inte så många parametrar:
Kod: Markera allt
Non-locking FileCopy version 1.01
Copyright (c) 2002 SoftTree Technologies, Inc.
Usage: FILECOPY source destination [/M mode] [/S start] [/L length]
Command line parameters:
source - source file name
destination - destination file name
Optional parameters:
mode - share mode, one of the following: 1, 2
mode 1 allows file read/write operations, this is the default mode
mode 2 allows file read operations only, prevents writes
start - starting position, default is 0 which is to start copying from
the begining of the source file
length - number of bytes to copy, default is to copy entire file;
if start + length value exceeds file size, FILECOPY copies
available bytes only
Tyvärr ingenting om "tyst" kopiering.
Det är inte så att det fungerar att skicka resultatet av kopieringen till "ingenstans"?
Dvs: FILECOPY source destination >NIL:
Det är bara en chansning, men det kanske är värt att prova iallafall.
Postat: 14 juli 2006, 11:44:06
av sodjan
Jag tror inte att det är COPY i sig, utan QB45 miljön som säger
"press any key" efter ett SHELL kommando.
Vad händer om man gör "SHELL DIR" ??
Postat: 14 juli 2006, 14:15:53
av grym
visst är det qb som vill att man ska trycka på en tangent för att komma vidare
filer kopieras och dir visar vad den skall sedan kommer att man ska trycka på en knapp, antagligen jättebra om man sitter vid datorn och vill se något på skärmen, men uselt om man vill göra något via automatik
samm sak om man bara skriver shell, då kommer man ut till dospromt och kan göra vad man vill , när man är färdig skriver man exit och får samma tryck på knappen meddelande
på något sätt borde man kunna komma runt det
Postat: 14 juli 2006, 18:18:53
av JimmyAndersson
Kanske om du kopierar filen i QBasic. Eller närmare bestämt läser in filen (som ska kopieras) som en sträng och sparar i en ny fil.
Hittade en sajt som löst det på ett annat sätt, men som troligen inte fungerar i ditt fall, men jag kan ju berätta ändå:
De hade gjort en bat-fil som först startar QBasic-programmet. När man sedan ska kopiera filen så avslutas QBasic-programmet och bat-filen fortsätter på nästa rad, dvs genom att kopiera filen. Efter det så startas QBasic-programmet igen. Dvs såhär:
bat-filen:
qbasic /run program.bas
copy härifrån hit
qbasic /run program.bas
För att Qbasic-programmet skulle avslutas så använde de kommandona CLOSE och SYSTEM när användaren valde att kopiera.
(QBasic-programmet startas alltså inte genom att man startar QBasic manuellt. Man kör bara bat-filen.)
Detta känns ändå som en lite omständig lösning, men i vissa fall kan det säkert fungera bra.
Postat: 14 juli 2006, 23:05:01
av grym
filkopiering med hjälp av qbasic fungerar, bara till att läsa en fil och skriva til den andra, men det tar ordentligt med tid
PRINT "kopierar bildfilen"
OPEN "mall100b.bmp" FOR BINARY AS #1
OPEN "out.bmp" FOR BINARY AS #2
DO WHILE NOT EOF(1)
GET #1, , a
PUT #2, , a
LOOP
CLOSE #1
CLOSE #2
kopiera en 3 Mb fil tar ca 30 sekunder och är det som tar mest tid i hela programmet
Postat: 14 juli 2006, 23:22:47
av baron3d
Har flera gånger använt SHELL.... med COPY och andra program UTAN några "press any key".
Har kört programmen i DOS5, 6 och win95 och win 98 utan problem.
Postat: 14 juli 2006, 23:28:30
av grym
hur gör du då ? ?
Postat: 14 juli 2006, 23:34:36
av baron3d
Några exempel
SHELL "copy " + mainfile$ + " ASMTMP.ASM"
SHELL "IF NOT EXIST ASMTMP.ASM COPY A.A ASMTMP.ASM"
SHELL "del a.a"
SHELL "copy asmtmp.asm " + directo$ + fil$ + ".asm"