Forum: PC-Programmierung Textdatei wird nciht überschrieben


von student (Gast)


Lesenswert?

Hallo,
da ich in der Welt der Programmierung relativ neu bin würde ich mich 
freuen, wenn ihr mir bei folgendem Problem helfen würdet:

Programmiersprache:C

ich will Daten aus meinem Array "data" in eine Textdatei schreiben.
Das klappt mir auch.
Nur wenn ich die Textdatei im Zielordner danach nicht wieder lösche, 
überschreibt er diese nicht mit neuen Daten nachdem der data-Array mit 
neuen Daten gefüllt ist ....

Der Quellcode ( nur ein Teil davon):

double AnalogRead (void)

{

       int32       error=0;

       TaskHandle  taskHandle=0;

       int32       read;

       float64     data[1000];

       char        errBuff[2048]={'\0'};

     int         i;

     int         u;

     int       p;

     float     data_time[1000];

     String ^dateiname="..\\Sinus.txt";

     FileStream ^fs=nullptr;
     StreamWriter ^sw =nullptr;

// DAQmx analog voltage channel and timing parameters


  DAQmxErrChk (DAQmxCreateTask("", &taskHandle));

  DAQmxErrChk(DAQmxCreateAIVoltageChan(taskHandle, "Dev3/ai0", "", 
DAQmx_Val_Cfg_Default, -10.0, 10.0, DAQmx_Val_Volts, NULL));

DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandle, "", 10000.0, 
DAQmx_Val_Rising, DAQmx_Val_FiniteSamps, 1000));

// DAQmx Start Code


 DAQmxErrChk(DAQmxStartTask(taskHandle));

// DAQmx Read Code


 DAQmxErrChk(DAQmxReadAnalogF64(taskHandle, 1000, 10.0, 
DAQmx_Val_GroupByChannel, data, 1000, &read, NULL));

// Stop and clear task
 if( read>1 )
    printf("Acquired %d samples\n",read);
    i=0;
    for(i=0;i<read;i++)
    {
       cout<<data[i]<<endl;
    }
    printf("--------------\n");

    p=0;
    for(p=0;p<read;p++)
    {
      data_time[p]=p/10000.0;
    }

    try
    {
      fs= gcnew FileStream(dateiname,FileMode::Append);
      sw= gcnew StreamWriter(fs);

      u=0;
      for(u=0;u<read;u++)
      {
        sw->WriteLine ("{0}    {1}",data[u],data_time[u]);
      }

    }

    catch(Exception ^e)
    {
      Console::WriteLine(e->Message);
    }

    finally
    {
      if(sw)
        sw->Close();
    }

    Console::WriteLine();



Error:

       if( DAQmxFailed(error) )

              DAQmxGetExtendedErrorInfo(errBuff,2048);

       if( taskHandle!=0 )  {

              DAQmxStopTask(taskHandle);

              DAQmxClearTask(taskHandle);

       }

       if( DAQmxFailed(error) )

              printf("DAQmx Error: %s\n",errBuff);

              return 0;


}

von Tom (Gast)


Lesenswert?

Bitte vernünftig einrücken, überflüssige Leerzeilen  rauswerfen und mit 
[ c ] [ /c ] hochladen.

>Programmiersprache:C
Das ist weder C noch C++.

von Uschiklaus (Gast)


Lesenswert?

student schrieb:
> Programmiersprache:C

Nein, das ist C++/CLI.

> Nur wenn ich die Textdatei im Zielordner danach nicht wieder lösche,
> überschreibt er diese nicht mit neuen Daten

Vielleicht wegen FileMode::Append?

von Mark B. (markbrandis)


Lesenswert?

Tom schrieb:
>>Programmiersprache:C
> Das ist weder C noch C++.

Richtig, es ist Microsoft C++/CLI. Warum sich jemand das antut ist mir 
rätselhaft. Entweder richtiges C++ oder richtiges C# und nicht so ein 
komischer Mischmasch aus den beiden. Aber vielleicht ist es ja für die 
Hausaufgabe des Themenerstellers so vorgegeben. Dann sollte man den 
Dozenten seines Amtes entbinden ;-)

: Bearbeitet durch User
von student (Gast)


Lesenswert?

Vielen Dank Uschiklaus...das war der Fehler

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.