Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Mysteriöser Fehler

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
21.04.2005, 18:22 Uhr
Oliver
S2-Pixelgeneral


Folgendes Codefragment:


C++:
// Listenobjekt zum speichern
    std::list<unsigned> tmp_list;
    
    FILE*erg2=fopen("c:\\proto.txt","w");
    
    for(unsigned cur_char=0,x=0,y=0,chars_per_line=0;cur_char<CHARS_ANZ;++cur_char,++chars_per_line)
    {
        if((x+=char_widths[cur_char])>tex_width)
        {
            // Zeile voll; neue Zeile, y um die Schriftgröße weiter, x plus Zeichenbreite, kann ja
            // schließlich nicht abgetrennt werden!
            y+=char_height;
            x=char_widths[cur_char]; // x=0+char_widths[cur_char], äquivalent
            tmp_list.push_back(chars_per_line);
            chars_per_line=0;
            fprintf( erg2, "newline!!!! list_size=%d\n\n",tmp_list.size());
        }
        
        fprintf( erg2, "CurChar: %d\nCharsPerLine: %d\n\n", cur_char, chars_per_line );
        
        // Wenn das Zeichen natürlich über die Größe hinaus wächst, wirds
        // problematisch
        if((y+char_height)>tex_height)
            // und Schluss
            return 0;
        
    }
    
    fclose(erg2);
    
    erg2=fopen("c:\\finale.txt", "w");
    
    fprintf(erg2, "listsize: %d", tmp_list.size());
    
    fclose(erg2);



Der Code ist eigentlich irrelevant (bitte keine Stielfragen, ist nur zum Test). So wenn ich das Programm ausgeführt habe, sehen die beiden Dateien so aus (ist ein bisschen viel, aber ich will's "originalgetreu" machen):


c:\\proto.txt:

CurChar: 0
CharsPerLine: 0

CurChar: 1
CharsPerLine: 1

CurChar: 2
CharsPerLine: 2

CurChar: 3
CharsPerLine: 3

CurChar: 4
CharsPerLine: 4

CurChar: 5
CharsPerLine: 5

CurChar: 6
CharsPerLine: 6

CurChar: 7
CharsPerLine: 7

CurChar: 8
CharsPerLine: 8

CurChar: 9
CharsPerLine: 9

CurChar: 10
CharsPerLine: 10

CurChar: 11
CharsPerLine: 11

CurChar: 12
CharsPerLine: 12

CurChar: 13
CharsPerLine: 13

CurChar: 14
CharsPerLine: 14

CurChar: 15
CharsPerLine: 15

CurChar: 16
CharsPerLine: 16

newline!!!! list_size=1

CurChar: 17
CharsPerLine: 0

CurChar: 18
CharsPerLine: 1

CurChar: 19
CharsPerLine: 2

CurChar: 20
CharsPerLine: 3

CurChar: 21
CharsPerLine: 4

CurChar: 22
CharsPerLine: 5

CurChar: 23
CharsPerLine: 6

CurChar: 24
CharsPerLine: 7

CurChar: 25
CharsPerLine: 8

CurChar: 26
CharsPerLine: 9

CurChar: 27
CharsPerLine: 10

CurChar: 28
CharsPerLine: 11

CurChar: 29
CharsPerLine: 12

CurChar: 30
CharsPerLine: 13

newline!!!! list_size=2

CurChar: 31
CharsPerLine: 0

CurChar: 32
CharsPerLine: 1

CurChar: 33
CharsPerLine: 2

CurChar: 34
CharsPerLine: 3

CurChar: 35
CharsPerLine: 4

CurChar: 36
CharsPerLine: 5

CurChar: 37
CharsPerLine: 6

CurChar: 38
CharsPerLine: 7

CurChar: 39
CharsPerLine: 8

CurChar: 40
CharsPerLine: 9

CurChar: 41
CharsPerLine: 10

newline!!!! list_size=3

CurChar: 42
CharsPerLine: 0

CurChar: 43
CharsPerLine: 1

CurChar: 44
CharsPerLine: 2

CurChar: 45
CharsPerLine: 3

CurChar: 46
CharsPerLine: 4

CurChar: 47
CharsPerLine: 5

CurChar: 48
CharsPerLine: 6

CurChar: 49
CharsPerLine: 7

CurChar: 50
CharsPerLine: 8

CurChar: 51
CharsPerLine: 9

newline!!!! list_size=4

CurChar: 52
CharsPerLine: 0

CurChar: 53
CharsPerLine: 1

CurChar: 54
CharsPerLine: 2

CurChar: 55
CharsPerLine: 3

CurChar: 56
CharsPerLine: 4

CurChar: 57
CharsPerLine: 5

CurChar: 58
CharsPerLine: 6

CurChar: 59
CharsPerLine: 7

CurChar: 60
CharsPerLine: 8

CurChar: 61
CharsPerLine: 9

CurChar: 62
CharsPerLine: 10

CurChar: 63
CharsPerLine: 11

CurChar: 64
CharsPerLine: 12

newline!!!! list_size=5

CurChar: 65
CharsPerLine: 0

CurChar: 66
CharsPerLine: 1

CurChar: 67
CharsPerLine: 2

CurChar: 68
CharsPerLine: 3

CurChar: 69
CharsPerLine: 4

CurChar: 70
CharsPerLine: 5

CurChar: 71
CharsPerLine: 6

CurChar: 72
CharsPerLine: 7

CurChar: 73
CharsPerLine: 8

CurChar: 74
CharsPerLine: 9

CurChar: 75
CharsPerLine: 10

CurChar: 76
CharsPerLine: 11

CurChar: 77
CharsPerLine: 12

CurChar: 78
CharsPerLine: 13

CurChar: 79
CharsPerLine: 14

CurChar: 80
CharsPerLine: 15

newline!!!! list_size=6

CurChar: 81
CharsPerLine: 0

sPerLine: 0

CurChar: 84
CharsPerLine: 1

CurChar: 85
CharsPerLine: 2

CurChar: 86
CharsPerLine: 3

CurChar: 87
CharsPerLine: 4

CurChar: 88
CharsPerLine: 5

CurChar: 89
CharsPerLine: 6

CurChar: 90
CharsPerLine: 7

CurChar: 91
CharsPerLine: 8

CurChar: 92
CharsPerLine: 9

CurChar: 93
CharsPerLine: 10




c:\\finale.txt:

listsize: 3



Also die Listengröße war 6 und ist dann auf 3 geschrumpft (?). Der Code ist 1:1 kopiert, ich verzweifle hier noch .
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.04.2005, 18:44 Uhr
Frodenius



hmm... also dein eis am stiel .... aber es geht ja nich um stil

also... man kann irgendwie nicht kompilieren nicht, also auch nicht selber testen....
bitte um den kompletten code

p.s.: wieso benutzt du stl-lists und dann fprintf() ??
--
NI! ...and thanks for all the fish!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.04.2005, 18:55 Uhr
Oliver
S2-Pixelgeneral



Zitat:

p.s.: wieso benutzt du stl-lists und dann fprintf() ??



Das meint ich mit Stil.
Weil die I/O Streams meine Exen immer so aufblähen (um ca. 200 KB)

Der Code befindet sich in einer Funktion, dewegen gehts schlecht.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
21.04.2005, 19:04 Uhr
Frodenius



hmm.. ja der compiler mokiert halt dass folgende variablen undefiniert sind:
CHARS_ANZ, char_width/height und text_width/height

naja also so kann ich das problem nicht erkennen, die listsize bleibt eigentlich unberührt.
(nach der letzten ausgabe in die datei in der schleife)
--
NI! ...and thanks for all the fish!

Dieser Post wurde am 21.04.2005 um 19:05 Uhr von Frodenius editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.04.2005, 19:11 Uhr
Oliver
S2-Pixelgeneral


CHARS_ANZ = 94;

char_width ist ein unsigned-Array, wo die einzelnen Zeichenbreiten drinnenstehen. char_height ist die Höhe. Das wird halt zur Laufzeit berechnet.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
21.04.2005, 19:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hmm push_back, macht das eine kopie vom inhalt, oder kopiert das nur den pointer rein? bin nicht so fit in der stl

Beim zweiten könnte mans evtl noch verstehen, beim ersten ists seltsam
--
class God : public ChuckNorris { };
 
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: