Avatar billede masteryeti Nybegynder
21. maj 2001 - 16:22 Der er 5 kommentarer og
1 løsning

gemme/hente strenge fra filer

Jeg har et lille program til DOS, der skal kunne behandle en streng fra en applikation lavet i C++.
Jeg vil i C++ gemme en streng fra en edit-box eller memo-felt i en fil.txt - fil.
Denne skal åbnes i dos-programmet (ren C-kode), strengen skal hentes, manipuleres med og gemmes - hvorefter C++ programmet igen skal hente den nye streng.

(for de nysgerrige er jeg ved at lave en dansk-til-sql kompiler. DOS-filen er lavet vha. flex/bison og en gnu-kompiler ... den andet i Borland Builder)

*drikker lidt mere kaffe* - håber nogen kan hjælpe !
Avatar billede rm Nybegynder
21. maj 2001 - 20:32 #1
Avatar billede borrisholt Novice
22. maj 2001 - 08:10 #2
masteryeti>>

Det her skulle virke. Jeg har ikke afprøvet det sat halvdelen af det er pseudo kode. Men prøv og se om ikke du kan fange idden i det, og få det til at virke.

int main(int argc, char* argv[])
{
//Open

  FILE *stream = fopen( fnbuf, \"r\" );
  char line[200];
  while( !feof( stream ) )
  {
        fgets( line, 200, stream );
        //do stuff with line
  }
  fclose( stream );

//Save   
  FILE *stream = fopen( fnbuf, \"w+\" );
//MSDN :
//\"w+\" Opens an empty file for both reading and writing. If the given file exists, its contents are destroyed
  //int i = Antal Strenge
  //while (i)
  {
    //char *p = &Strneg nummer i
    fputs(p, stream);
  }
  fclose( stream );
   
    return 0;
}

Avatar billede masteryeti Nybegynder
22. maj 2001 - 08:58 #3
Umiddelbart ser det sidste ud til at virke, bortset fra at man deklarer stream 2 gange ;) .. det er nu til at finde ud af og rette.
Men kommandoen \"fnbuf\" kan ikke genkendes da jeg prøvede at kompilere det med Borland C++ Builder - er det fordi at dette er ren C-kode ?
Avatar billede borrisholt Novice
22. maj 2001 - 09:05 #4
masteryeti >> Det er fordi du begår en stor fejl. STOR STOR fejl. Helt elementær fejl : Du gør som jeg skriver og ikke som jeg tænker !!!!!

Begynd nu ikke at forvire mig med latterlige detaljer om at jeg bare kunne skrive som jeg tænker :-)

anyway. fnbuf er bare en variabel eller en konstant der indeholder filnavnet på din fil. Dvs du sletter bare fnbuf, og skriver et filnavn der i en streng altså :

  FILE *stream = fopen( fnbuf, \"r\" );
bliver til
  FILE *stream = fopen( \"SQL.TXT\", \"r\" );
Eller hvad nu din fil hedder.

Problemet er at jeg har lavet cut and paste fra et gammelt projekt og ikke har fået det hele med :-)

Jens B http://fotx.net/borrisholt
Avatar billede masteryeti Nybegynder
22. maj 2001 - 09:25 #5
hehe .. det er okay .. jeg fandt selv ud af det 3-4 minutter efter at jeg havde skrevet den anden besked .. grunden til at det forvirrede mig, var valget af navnet fnbuf ... det kunne næsten lyde som et reserveret ord :) - kiggede i hjælpfilen om fopen og fandt ud a det -- og for at det ikke skal være løgn, så hedder min fil sql.txt :)
Det driller dog stadigt.
void main()
{
char line[400];
FILE* stream = fopen(\"sql.txt\", \"r\");

while (!feof, 400, stream)
{
  fgets(line, 400, stream);
}
fclose(stream);

strcat(line, \"+ lidt ekstra\");

stream = fopen( \"sql.txt\", \"w+\" );
fputs(line, stream);
fclose(stream);
}

Gør intet.. exe-filen åbner, og kigger bare på mig ! (sql.txt findes i biblioteket)
Avatar billede masteryeti Nybegynder
22. maj 2001 - 09:28 #6
DoooooooHHH !!!!!!

Det er tidligt, jeg har ikke fået nok kaffe !! .. sowwy guys, fandt problemet.

Takker Borrisholdt for at have tålmodighed med  mig :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester