Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » File öffnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.09.2006, 23:40 Uhr
elturco



Hallo zusammen,

ich habe eine Frage. Ich möchte einen File öffnen das ich weiter bearbeiten möchte ich zeige euch das mal am besten:


Code:
char* pOffsetFileName;
//This function read the offset file.
//Input: char* pOffsetFileName - file to read


void Interpolator::ReadOffsetFile(char* pOffsetFileName)
{
    //open the file
    FILE* pInFile = fopen(pOffsetFileName, "r");
    if (pInFile == NULL)
    {
        m_ErrorType = BAD_OFFSET_FILE;
        return;
    }

    //Allocate memory for m_pTimeDistArray
    m_pTimeDistArray = new int [m_pSampledMotion->m_NumFrames];

    int frameNum, frameNumPrev = 0;
    //read the file
    for (int i = 0; i < m_pSampledMotion->m_NumFrames; i++)
    {
        //read next line
        if (fscanf(pInFile, "%d", &frameNum) == -1)
        {
            m_ErrorType = BAD_OFFSET_FILE;
            return;
        }

        //Compute offset and store into array
        //offset = number of frames skipped between frame i and i-1
        m_pTimeDistArray[i] = frameNum - frameNumPrev - 1;  
        frameNumPrev = frameNum;

    }
}



Das ist eine Programmier Aufgabe, ich möchte hierbei die Varible mit der Funktion fopen initialisieren. Krige das irgendwie nicht so hin, kann mir da jemand mal bitte unter die Arme greifen ?

Grüße

tyson
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.09.2006, 01:49 Uhr
Pablo
Supertux
(Operator)


Und was ist dein Problem? Der Code ist korrekt. Was meinst du mit "Krige das irgendwie nicht so hin"?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.09.2006, 09:56 Uhr
Pler
Einer von Vielen
(Operator)


Der Quellcode ist ja offensichtlich ein anderes Beseispiel. Und das Umschreiben auf die eigene Aufgabe funktoiniert nicht?
Aber was genau nicht geht musst du schon sagen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.09.2006, 11:05 Uhr
xXx
Devil


Hmm der Code ist net korrekt fclose fehlt ... aja .. und nimm mal cpp tags damit man das mal anständig lesen kann
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.09.2006, 11:15 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Hmm der Code ist net korrekt


Ein Fehlen von fclose macht den Code nicht "falsch". Es hängt von der Aufgabenstellung ab ob der Code "falsch oder richtig" ist...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.09.2006, 12:14 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ansonsten sollte pOffsetFileName const sein - aber ohne Genaue Fehlermeldung und so weiter und sofort können wir halt keine diagnose erstellen. denn so syntaktisch ist er korrekt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.09.2006, 16:20 Uhr
elturco



Hallo nochmal zusammen,

ich sollte die Frage mal ein wenig anders stellen. Ich bin nicht so sehr vertraut mit C++.
Es geht hierbei im "Interplotion" im Bereich Computer Animation, die Aufgabe besteht darin, dass ich eine "Animation" bekomme, wo z.B. ein Männeken am laufen ist und während die Animation läuft soll ich eine andere Animation hochladen, mit einem anderen Verhalten z.B. er geht diesmal rückwärts.
Das Ziel ist es die übergänge der beiden Animationen so "geschmeidig" wie möglich zu machen, d.h. zu Interpolieren.

Ich versuche gerade dem Button "Interpolate" mitzuteilen, dass er eine Funktion aufrufen soll. Das sieht folgerdermaßen aus.

Der Konstruktor

C++:
Interpolator::Interpolator(Motion* pSampledMotion, char* pOffsetFileName)
{
    //Set default interpolation type
    m_InterpTypeToUse = LINEAR;

    //set default angle representation to use for interpolation
    m_AngleRepresToUse = EULER;

    //Set motion to be interpolated
    m_pSampledMotion = pSampledMotion;

    //Set ErrorType to NO_ERROR
    m_ErrorType = NO_ERROR_SET;

    //Init m_pTimeDistArray array
    m_pTimeDistArray = NULL;
    ReadOffsetFile(pOffsetFileName);
}



die Funktion ich aufrufen möchte: zuerst die erste und danach die zweite

C++:
void Interpolator::ReadOffsetFile(char* pOffsetFileName)
{
    //open the file
    FILE* pInFile = fopen(pOffsetFileName, "r");
    if (pInFile == NULL)
    {
        m_ErrorType = BAD_OFFSET_FILE;
        return;
    }

    //Allocate memory for m_pTimeDistArray
    m_pTimeDistArray = new int [m_pSampledMotion->m_NumFrames];

    int frameNum, frameNumPrev = 0;
    //read the file
    for (int i = 0; i < m_pSampledMotion->m_NumFrames; i++)
    {
        //read next line
        if (fscanf(pInFile, "%d", &frameNum) == -1)
        {
            m_ErrorType = BAD_OFFSET_FILE;
            return;
        }

        //Compute offset and store into array
        //offset = number of frames skipped between frame i and i-1
        m_pTimeDistArray[i] = frameNum - frameNumPrev - 1;    
        frameNumPrev = frameNum;

    }
}

//Create interpolated motion
void Interpolator::Interpolate(Motion*& pInterpMotion)
{
    //Do nothing if error is set
    if (m_ErrorType != NO_ERROR_SET)
    {
        pInterpMotion = NULL;
        return;
    }

    //Compute number of frames int the new (interpolated) motion
    int nNumFrames = 0;
    
    //Count all skipped frames
    for (int i = 0; i < m_pSampledMotion->m_NumFrames; i++)
        nNumFrames += m_pTimeDistArray[i];
    
    //Add number of frames on the sampled file
    nNumFrames += m_pSampledMotion->m_NumFrames;

    //Allocate new motion - initially set to default motion
    pInterpMotion = new Motion(nNumFrames);

    //Perform the interpolation
    if (m_InterpTypeToUse == LINEAR && m_AngleRepresToUse == EULER)
        LinearInterpEulerAngles(pInterpMotion);
    else
    {
        //For now only linear interpolation of euler angles is supported
        m_ErrorType = NOT_SUPPORTED_INTERP_TYPE;
        delete pInterpMotion;
        pInterpMotion = NULL;
        return;
    }
}



Jetzt meine Frage ich mein die Frage ist wohl für den einen oder anderen ziemlich einfach, aber ich kenne mich halt nicht so sehr damit aus:
Ich möchte meinem Button" Interpolate sagen" dass er eines Funktionen aufrufen soll, aber beim erzeugen des Objektes habe ich meine Probleme


C++:
static Motion *pSampledMotion = NULL;    
// Motion information as read from AMC file

//Interpolate loaded motion using linear interpolation
void interpolate_callback(Fl_Button *button, void *)
{
    interpolate_button->value(); ??
    Interpolator neu = new Interpolator(pSampledMotion,????????);

}



Ich mein mein Konstruktor hat 2 Parameter, ich weiss hier nicht wie ich diesen 2 Parameter bestimmen kann. Ich kann sagen ok, fopen usw. aber in der Funktion ReadOffsetFile wird ja so ein File geöffnet ?

Habt Ihr meine Frage verstanden ???


Würd mich freuen wenn ihr mir helfen könntet...

Grüße


Bearbeitung von Uwe:
Bitte cpp - Tag verwenden.

Dieser Post wurde am 29.09.2006 um 16:33 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: