/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
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
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



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste