Forum: bloodshed

Forum huvudsida -> Programmering -> bloodshed

Sidor: 1

Till botten

ghostz 19:44 - 14:e Juni 2006 | Post #1
Medlem
Inlägg: 4


Skicka PM
,,r det någon som vet vart man kan få tag i en äldre verision av Devs bloodshed c++, typ 1,5 år gammal.

Tankade ner den senaste verisionen och mina gamla program funkar inte(fattar inte varför).


Tackarrrrrrrrrr!


-------------------------
Ingen signatur!



Nissebosselasse 12:53 - 15:e Juni 2006 | Post #2
Medlem
Inlägg: 490


Skicka PM
Vad får du för felmeddelande? Använder du några extra bibliotek (SDL, etc.), som kanske måste ominstalleras/ställs in på nytt igen?

-------------------------
http://pushingcows.se
Gula Nallen



ghostz 13:56 - 15:e Juni 2006 | Post #3
Medlem
Inlägg: 4


Skicka PM
Vad jag gorde var att installera nyaste bloodshed sedan öppnade jag ett nytt projekt och klistrade in gamla koden, när jag sedan kompilerade fick jag en massa fel.

Jag har lyckats att få igenom kompileringen men programmet kan inte öppna och läsa från en textfil.
Nedan följer koden som jag har problem med.

Den ska öppna och läsa från filen "test4"
Filen är en textfil och är sparad i ANSI kod, jag
har även provat att spara den i olika format.
///////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include <string.h>
#include <string>
#include <stdlib.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <iomanip>

using namespace std;

int skrap;
char *c;
char *r;

FILE *f1;


void loadData()
{
cout <<"går in i loadData() : "<<endl;
if ((f1 = fopen("test4", "r")) ==NULL)
{
printf("Error opening file\n");
cin>>skrap;
exit(1);
}

}


int main (int argc, char *argv[])
{
loadData();
cin>>skrap;
}


-------------------------
Ingen signatur!



Nissebosselasse 00:45 - 16:e Juni 2006 | Post #4
Medlem
Inlägg: 490


Skicka PM
Ligger filen test4 i samma mapp som projektet?

-------------------------
http://pushingcows.se
Gula Nallen



ghostz 11:16 - 16:e Juni 2006 | Post #5
Medlem
Inlägg: 4


Skicka PM
japp!

-------------------------
Ingen signatur!



Nissebosselasse 11:41 - 16:e Juni 2006 | Post #6
Medlem
Inlägg: 490


Skicka PM
Okej, jag testade att kompilera koden (i Visual C++ 6.0), skapade en fil vid namn "test4", och allt fungerade.

Den filen du skapade som hette "test4", du är säker på att Windows inte lagt till en filändelse? Under "Mappalternativ" (fliken "Visning") finns ju ett alternativ som heter "Dölj filnamnstillägg för kända filtyper", och om du har sparat filen från Anteckningar, så kanske det har lagt till ändelsen ".txt", som sedan döljs av Windows, så att det bara ser ut som att filen enbart heter "test4" (när den i själva verket heter "test4.txt")?

En annan sak jag tänkte på var: det verkar på din kod som att du gör ett C++-program, och då borde du använda std::fstream istället för det äldre system med fopen (som kommer från C).

Jag skrev om din kod helt i C++:

#include <iostream>
#include <fstream>

void loadData()
{
    std::cout <<"går in i loadData() : " << std::endl;
    
    // Deklarera ett ifstream-objekt, dvs,
    // som läser in data från en fil (input-filestream).
    // Motsatsen heter ofstream (output-).
    std::ifstream f1;

    // Försök öppna filen
    f1.open ("test4");

    // Gick det att öppna den?
    if (!f1.is_open()) {
        // Nej!
        std::cout << "Error opening file." << std::endl;
        
        int skrap;
        std::cin >> skrap;
        
        return;
    }
    
    // Kommer vi så här långt så är allt okej.
    
    // Vi behöver inte stänga filhandtaget, eftersom det
    // sker automatiskt i ifstream-klassens destruktor
    // (den metod som anropas när objektet "förstörs" -
    // i det här fallet vid funktionens slut).

    // Om vi däremot VILL stänga filen manuellt, så
    // gör man så här:
    f1.close ();
}

int main (int argc, char *argv[])
{
    int skrap;

    loadData();

    std::cin >> skrap;

    // Returnerar statuskod till operativssystemet
    // (0 = allt okej)
    return 0;
}


Du borde kanske skriva om loaddata så att den returnerar sant eller falskt (bool) istället för ingenting (void)? På så vis kan du i koden kolla huruvida det gick att ladda in allting, typ:

// Ladda in lite data som måste finnas för
// att spelet ska kunna fungera.
if (!loaddata()) {
    // Gick inte, skriv felmeddelande och avsluta
}


-------------------------
http://pushingcows.se
Gula Nallen



ghostz 15:21 - 16:e Juni 2006 | Post #7
Medlem
Inlägg: 4


Skicka PM
Jag bockar och bugar!
,,ndrade i mappalternativ och
nu funkar det som det ska.

-------------------------
Ingen signatur!



Sidor: 1

Forum huvudsida -> Programmering -> bloodshed
Atom feed

Du får inte posta i den här tråden | Till toppen