Toon posts:

[C++] bestand inlezen?

Pagina: 1
Acties:
  • 27 views sinds 30-01-2008

Verwijderd

Topicstarter
Hellow,

Ik ben momenteel bezig aan een programma die zal gebruikt worden in CANbus toepassingen. Nu werkt het programma globaal gezien al, maar nu moet ik met config files willen werken die moeten ingeladen worden.

neem nu bijvoorbeeld " config1.ini " waarin dan alle parameter staan die kunnen gebruikt worden ( naam, verbindingsinstellingen etc )

Nu maak ik gebruik van borland dev. studio 2006 waar ik al een opendialog box e.d heb, maar nu moet ik het bestand die ik selecteerde proberen in te laden en gebruiken .. maar daar loop ik precies vast ..
Kheb al een gans eind gezocht, en verschillende dingen geprobeerd.. maar ik kom er niet uit ..

nu heb ik alles herleid tot dit stukje code .. maar dit wil ie dan niet compileren ?

C:
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::LoadConfig1Click(TObject *Sender)
{
    if( OpenDialog1->Execute()){
        try {
        file = (fopen(OpenDialog1->FileName.c_str(), "r+"));
        }
        catch (const char * e)
        {
            Application->MessageBox(e,"Error",MB_OK);
        }
    }
}


In visual studio kan ik dit met een FileStream en een Streamreader .. maar ik kan maar niet uitvissen hoe dit moet in borland c++
Alvast bedankt!!
Alexander

[ Voor 5% gewijzigd door Verwijderd op 21-09-2006 13:15 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wát lukt er dan precies niet? En je kunt altijd de documentatie openen, fopen() opzoeken, en vandaaruit verder bladeren naar aanverwante functies.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
.oisyn schreef op donderdag 21 september 2006 @ 13:27:
Wát lukt er dan precies niet? En je kunt altijd de documentatie openen, fopen() opzoeken, en vandaaruit verder bladeren naar aanverwante functies.
mss wat misgeformuleerd, maar als dit werkt :

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FILE *bestand;

void __fastcall TForm2::LoadConfig1Click(TObject *Sender)
{
    if( OpenDialog1->Execute()){
        try {
        bestand = fopen(OpenDialog1->FileName.c_str(), "r+");
                // HIER MOET IK M'N BESTAND GEBRUIKEN, MAAR HOE?
        }
        catch (const char * e)
        {
            Application->MessageBox(e,"Error",MB_OK);
        }
    }
}


ik kan dus m'n bestand openen, maar ik weet niet hoe ik de data daarvan kan gebruiken?
Ik heb al voorbeelden gevonden zoals dit :

fprintf(bestand,"Data: %s\n",Data);

maar hoe kan ik bv het eerste lijntje uit m'n bestand binnenhalen, en als tekst in een vakje plaatsen?

alvast bedankt!
Alexander

Verwijderd

Het kan met fopen, of als je per karakter wil doen:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// filename is een char[].
ifstream from (filename);
if (!from) {
    // Exception, error whatever jij wil
}

// Process every char from input.
string attribute, value;
bool attr = false;
while (from.get(ch)) {
    switch (ch) {
        case '=':
            attr = true;
            break;
        case '\n': case '\r':
            if (from.get(ch) && !(ch == '\n' || ch == '\r')) {
                from.putback(ch);
            }
            // Voeg de attribute/value paar toe aan je config map of whatever
            attr = false;
            break;
        default:
            if (attr == true) {
                attribute.push_back(ch);
            }
            else {
                value.push_back(ch);
            }
    }
}


Natuurlijk kaldje, en zonder comment en zonder checks en zal vaste efficienter kennen

En moet jij niet fread hebben? http://www.cplusplus.com/ref/cstdio/fread.html

[ Voor 5% gewijzigd door Verwijderd op 21-09-2006 13:48 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Asjeblieft zeg, dit is best te vinden. [google=c tutorial fopen], eerste hit, en de volgende tientallen hits ook. :X Volgende keer mag je zelf best iets meer moeite doen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.