|
| IO i visual c Fra : David |
Dato : 24-04-01 20:25 |
|
Hej. Jeg sidder og laver en editor i et programmeringssprog der minder om
Visual C(LCC hedder det vist). Hvordan bruger man IO. Det er jo ikke ligesom
i de gode gamle dage med en doskompiler hvor man bare kunne inklude fstream
og så skrive og læse fra filer.
| |
Niels Hove (24-04-2001)
| Kommentar Fra : Niels Hove |
Dato : 24-04-01 22:37 |
|
hej
jeg ved ikke så meget om det, men man kan da ihvertfald med
#include <fstream>
få lov til at oprette og skrive + læse fra filer ....
/niels
David <nma2818@vip.cybercity.dk> wrote in message
news:9c4j4f$283g$1@news.cybercity.dk...
> Hej. Jeg sidder og laver en editor i et programmeringssprog der minder om
> Visual C(LCC hedder det vist). Hvordan bruger man IO. Det er jo ikke
ligesom
> i de gode gamle dage med en doskompiler hvor man bare kunne inklude
fstream
> og så skrive og læse fra filer.
>
>
| |
David (25-04-2001)
| Kommentar Fra : David |
Dato : 25-04-01 15:29 |
|
Ja men headeren findes ikke i mit bibliotek så jeg ville høre om der ikke
var andre måder med win api'et-
| |
Niels Hove (25-04-2001)
| Kommentar Fra : Niels Hove |
Dato : 25-04-01 19:04 |
|
som sagt jeg aner ikke det store om lige netop det ....
David <nma2818@vip.cybercity.dk> wrote in message
news:9c6m6u$1i33$1@news.cybercity.dk...
> Ja men headeren findes ikke i mit bibliotek så jeg ville høre om der ikke
> var andre måder med win api'et-
>
>
| |
aslak (25-04-2001)
| Kommentar Fra : aslak |
Dato : 25-04-01 21:17 |
|
Jeg kender ikke lige den compiler du snakker om!! har du et link?
Men i Visual C++ / MFC laver du blot et CFile objekt, og dette kan du så
oprette filer/læse/skrive/slette etc med!!!
mvh / Rasmus
"Niels Hove" <wuss@hillbilly.dk> wrote in message
news:9c73g6$6r2$1@news.inet.tele.dk...
> som sagt jeg aner ikke det store om lige netop det ....
>
>
> David <nma2818@vip.cybercity.dk> wrote in message
> news:9c6m6u$1i33$1@news.cybercity.dk...
> > Ja men headeren findes ikke i mit bibliotek så jeg ville høre om der
ikke
> > var andre måder med win api'et-
> >
> >
>
>
| |
Michael Rasmussen (25-04-2001)
| Kommentar Fra : Michael Rasmussen |
Dato : 25-04-01 21:19 |
|
du kan bruge fopen / open og venner fra stdio.h eller de Win32-specifikke
CreateFile/ReadFile/WriteFile osv., du kan finde informationer om brug af
dem
på http://msdn.mircosoft.com eller hente
ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
venlig hilsen,
Michael Rasmussen
"David" <nma2818@vip.cybercity.dk> wrote in message
news:9c4j4f$283g$1@news.cybercity.dk...
> Hej. Jeg sidder og laver en editor i et programmeringssprog der minder om
> Visual C(LCC hedder det vist). Hvordan bruger man IO. Det er jo ikke
ligesom
> i de gode gamle dage med en doskompiler hvor man bare kunne inklude
fstream
> og så skrive og læse fra filer.
>
>
| |
David (26-04-2001)
| Kommentar Fra : David |
Dato : 26-04-01 20:15 |
|
Michael Rasmussen <3306248m001@stofanet.dk> skrev i meddelelsen
<8jGF6.2940$S4.989844@news101.telia.com>...
>du kan bruge fopen / open og venner fra stdio.h eller de Win32-specifikke
>CreateFile/ReadFile/WriteFile osv., du kan finde informationer om brug af
>dem
>på http://msdn.mircosoft.com eller hente
>ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
Kan du ikke venligt skrive i kode hvordan man åbner en fil("minfil.txt") og
får al teksten ned i en char[] variabel. Det er ligemeget om man skal bruge
stdio eller win apiet.
| |
Igor V. Rafienko (26-04-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 26-04-01 20:06 |
|
* nma2818@vip.cybercity.dk
[snip]
> Kan du ikke venligt skrive i kode hvordan man åbner en
> fil("minfil.txt") og får al teksten ned i en char[] variabel.
Jøss, det må ha blitt utrolig vanskelig å lese relevante kapitler fra
K&R2.
ivr
--
The only "intuitive" interface is the nipple. After that, it's all learned.
(Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.)
| |
Michael Rasmussen (26-04-2001)
| Kommentar Fra : Michael Rasmussen |
Dato : 26-04-01 20:20 |
|
#include <stdio.h>
#include <stdlib.h>
char *MitArray;
int LaesFil(const char *Filnavn)
{
FILE *fp;
long fillaengde;
if((fp = fopen(Filnavn, "r")) == NULL)
{
// øv bøv kunne ikke åbne filen
return 0;
}
fseek(fp, 0, SEEK_END);
fillaengde = ftell(fp);
fseek(fp, 0, SEEK_SET);
if((MitArray = malloc(fillaengde)) == NULL)
{
// avs, vi kunne ikke allokere tilstrækkelig hukkomelsen (eller filen har
længde 0)
return 0;
}
fread(MitArray, fillaengde, 1, fp);
fclose(fp);
return 1;
}
if(!LaesFil("minfil.txt"))
{
// fejl
}
// ingen fejl
venlig hilsen
Michael Rasmussen
"David" <nma2818@vip.cybercity.dk> wrote in message
news:9c9raf$4gv$1@news.cybercity.dk...
>
> Michael Rasmussen <3306248m001@stofanet.dk> skrev i meddelelsen
> <8jGF6.2940$S4.989844@news101.telia.com>...
> >du kan bruge fopen / open og venner fra stdio.h eller de Win32-specifikke
> >CreateFile/ReadFile/WriteFile osv., du kan finde informationer om brug af
> >dem
> >på http://msdn.mircosoft.com eller hente
> >ftp://ftp.cs.virginia.edu/pub/lcc-win32/win32hlp.exe
> Kan du ikke venligt skrive i kode hvordan man åbner en fil("minfil.txt")
og
> får al teksten ned i en char[] variabel. Det er ligemeget om man skal
bruge
> stdio eller win apiet.
>
>
| |
Igor V. Rafienko (26-04-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 26-04-01 21:02 |
|
* Michael Rasmussen
[snip]
> fseek(fp, 0, SEEK_END);
> fillaengde = ftell(fp);
> fseek(fp, 0, SEEK_SET);
It won't work. Not the way you expect[*]. Det greieste er å lese data i
faste blokker à det OS foretrekker (fx. det som stat rapporterer på
solaris i st_blksize).
[*] Ting er virkelig råtne på dette punktet -- det finnes ingen
portabel måte å finne størrelsen av filen (noen OS feilrapporterer
det, andre ikke teller visse tegn, de tredje pad'er opptil en eller
passenede størrelse, osv.).
[snip]
ivr
--
The only "intuitive" interface is the nipple. After that, it's all learned.
(Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.)
| |
Kent Friis (26-04-2001)
| Kommentar Fra : Kent Friis |
Dato : 26-04-01 21:58 |
|
Den 26 Apr 2001 22:01:36 +0200 skrev Igor V. Rafienko:
>* Michael Rasmussen
>
>[snip]
>
>> fseek(fp, 0, SEEK_END);
>> fillaengde = ftell(fp);
>> fseek(fp, 0, SEEK_SET);
>
>
>It won't work. Not the way you expect[*]. Det greieste er å lese data i
>faste blokker à det OS foretrekker (fx. det som stat rapporterer på
>solaris i st_blksize).
>
>[*] Ting er virkelig råtne på dette punktet -- det finnes ingen
>portabel måte å finne størrelsen av filen (noen OS feilrapporterer
>det, andre ikke teller visse tegn, de tredje pad'er opptil en eller
>passenede størrelse, osv.).
Jeg brugte da den metode til at finde størrelsen på en fil for et
par dage siden, og det virkede fint. Men ok, det var også under
Linux, hvor alt virker som forventet
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/ - sidste billede: garden.png
| |
Igor V. Rafienko (27-04-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 27-04-01 12:30 |
|
* Kent Friis
[snip]
> Jeg brugte da den metode til at finde størrelsen på en fil for et
> par dage siden, og det virkede fint. Men ok, det var også under
> Linux, hvor alt virker som forventet
Nope, it does not:
$ ./a.out
$ stat holes.dta
fdevice 46163939
inode 63695
mode 100600
links 1
uid 3172 (igorr)
gid 13172 (igorr)
maj 0
min 0
size 2147483601
atime 988370806 (2001-04-27 13:26:46)
mtime 988370806 (2001-04-27 13:26:46)
ctime 988370806 (2001-04-27 13:26:46)
blksize 8192
blocks 32
$
Hva tror du ftell vil fortelle deg på denne filen? Og jeg er villig
til å vedde _mye_ på at holes.dta ikke inneholder 2GB med data (btw,
(* 8192 32) => 262144).
ivr
--
The only "intuitive" interface is the nipple. After that, it's all learned.
(Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.)
| |
Kent Friis (27-04-2001)
| Kommentar Fra : Kent Friis |
Dato : 27-04-01 14:26 |
|
Den 27 Apr 2001 13:30:02 +0200 skrev Igor V. Rafienko:
>* Kent Friis
>
>[snip]
>
>> Jeg brugte da den metode til at finde størrelsen på en fil for et
>> par dage siden, og det virkede fint. Men ok, det var også under
>> Linux, hvor alt virker som forventet
>
>
>Nope, it does not:
>
>$ ./a.out
>$ stat holes.dta
>fdevice 46163939
>inode 63695
>mode 100600
>links 1
>uid 3172 (igorr)
>gid 13172 (igorr)
>maj 0
>min 0
>size 2147483601
>atime 988370806 (2001-04-27 13:26:46)
>mtime 988370806 (2001-04-27 13:26:46)
>ctime 988370806 (2001-04-27 13:26:46)
>blksize 8192
>blocks 32
>$
>
>
>Hva tror du ftell vil fortelle deg på denne filen? Og jeg er villig
>til å vedde _mye_ på at holes.dta ikke inneholder 2GB med data (btw,
>(* 8192 32) => 262144).
Jeg ved godt at der findes to slags fil-størrelser. Den mængde data
der kan læses fra filen, og det filen rent faktisk fylder på disken.
Det var den første størrelse jeg forventede at få, og det var den
jeg fik.
Den anden skal ikke bruges til ret meget, udover "du" og "df", og hvis
det er den man er ude efter, vil jeg slet ikke overveje andet end stat
(lstat hvis det skal være helt rigtigt).
Mvh
Kent
PS: jo, jeg kender udemærket "sparse files" - filer med huller. De er
sjove
--
http://www.celebrityshine.com/~kfr/ - sidste billede: garden.png
| |
Richard Flamsholt (26-04-2001)
| Kommentar Fra : Richard Flamsholt |
Dato : 26-04-01 23:01 |
|
igorr@ifi.uio.no (Igor V. Rafienko) skrev:
>[*] Ting er virkelig råtne på dette punktet
Ja.
> -- det finnes ingen portabel måte å finne størrelsen av filen
Filens størrelse på disken kan man ikke finde, nej. Den er afhængig af
filsystemet, som du også skriver.
Men man kan portabelt finde størrelse af filens indhold på den dumme
måde: læs hele filen (i små klumper, fx BUFSIZ bytes af gangen) og tæl
antal bytes. Det er den eneste portable metode - men brug endelig et
OS-specifikt alternativ (såsom stat(), fstat()) hvis det findes.
--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk
| |
Igor V. Rafienko (27-04-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 27-04-01 12:32 |
|
* Richard Flamsholt
> Men man kan portabelt finde størrelse af filens indhold på den dumme
> måde: læs hele filen (i små klumper, fx BUFSIZ bytes af gangen) og tæl
> antal bytes. Det er den eneste portable metode - men brug endelig et
> OS-specifikt alternativ (såsom stat(), fstat()) hvis det findes.
stat kan gi "feil" svar. Lese filen i små klumper i henhold til ett
eller annet predefinert format hørtes ut som en God Ide[tm].
ivr
--
The only "intuitive" interface is the nipple. After that, it's all learned.
(Bruce Ediger, bediger@teal.csn.org, in comp.os.linux.misc, on X interfaces.)
| |
Michael Rasmussen (26-04-2001)
| Kommentar Fra : Michael Rasmussen |
Dato : 26-04-01 23:03 |
|
"Igor V. Rafienko" <igorr@ifi.uio.no> wrote in message
news:xjvae53v3a7.fsf@hafur.ifi.uio.no...
>
> > fseek(fp, 0, SEEK_END);
> > fillaengde = ftell(fp);
> > fseek(fp, 0, SEEK_SET);
>
>
> It won't work. Not the way you expect[*]. Det greieste er å lese data i
> faste blokker à det OS foretrekker (fx. det som stat rapporterer på
> solaris i st_blksize).
>
> [*] Ting er virkelig råtne på dette punktet -- det finnes ingen
> portabel måte å finne størrelsen av filen (noen OS feilrapporterer
> det, andre ikke teller visse tegn, de tredje pad'er opptil en eller
> passenede størrelse, osv.).
avs, det var jeg ikke klar over. Har dog aldrig haft nogen problemer med
det,
men jeg er ked af, hvis jeg vildledte David.
venlig hilsen
Michael Rasmussen
| |
|
|