Merkwürdiges Problem

Gast #2254115
Lesenswert?

Hallo liebe Code-Gemeinschaft ;)
Ich stehe vor einem verwirrenden Problem.
Wenn ich diesen Code
1
bool RahmenInfo::writein_rahmen(unsigned int x , unsigned int y ,const char *string)
2
{
3
    if((strlen(string)>(xmax-x)) || x>xmax || y>ymax) return false;
4
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),23);
5
    mygotoxy(koordinaten.X+x-1,koordinaten.Y+y-1);
6
    puts(string);
7
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),7);
8
    return true;
9
}
auf meinem alten Rechner kompiliere , dann macht er seit neuestem NICHTS 
beim mygotoxy (nur in dieser Funktion). Bei meinem neuen Rechner 
funktioniert alles bestens. An welchen Faktoren könnte das liegen?
Lg Wild
Gast #2254206
Lesenswert?

Sorry. Hab grade gemerkt , dass beim  zweiten Anlauf das gleiche 
passiert.
Aber eine andere Frage:
Beim Aufruf unterer Funktion(en) werden total unbeteiligte (private) 
Klassendaten verändert. Vielleicht weil ich alte C-Funktionen in C++ 
benutze??
1
bool fsetposto(FILE *stream,char character,fpos_t *position)
2
{
3
    if(stream==NULL) return false;
4
    char c=((character==0)?1:0);
5
    fseek(stream,-1L,SEEK_END);
6
    while(c!=character)
7
    {
8
        fseek(stream,-1L,SEEK_CUR);
9
        c=fgetc(stream);
10
        ungetc(c,stream);
11
        if(c==-1) return false;
12
    }
13
    fseek(stream,1L,SEEK_CUR); //Um eine Stelle nach dem Gefundenen einzusetzen
14
    fgetpos(stream,&(*position));
15
    return true;
16

17
}
18

19
bool tailto(FILE *stream,char *string,char character)
20
{
21
    if(fsetposto(stream,character,NULL))
22
    {
23
        if(character==10) fseek(stream,1L,SEEK_CUR);
24
        fgets(string,1024,stream);
25
        return true;
26
    }
27
    else return false;
28
}
#2254277
Lesenswert?

> eigentliche Bug

Impliziert das aufrufen von fgetpos mit NULL-Ponter kein "echter Bug" 
ist.
Dem ist nicht so. Danke der Weitsicht deiner libc-Implementatoren, dass 
die deinen Fehler für dich ausgebügelt haben, obwohl sie (laut 
POSIX/ANSI) nicht mussten.

d.H. du hast noch einen zweiten Bug, der das von dir beobachtete 
Verhalten verursacht:

prüf noch deine anderen Pointer. z.B. "string", zeigt das immer auf 
einen passend großen Buffer?
Gast #2254326
Lesenswert?

Also nachdem ich das Objekt als global eigestuft hab fuktioniert alles 
:).
Jetzt hab ich WIEDER ne Frage:
Wie kann ich eine Datei von 2 Programmen gleichzeitig "bearbeiten" 
lassen?
Es ist SEHR DRINGEND!
Lg Wild
#2254360
Lesenswert?

Wild schrieb:
> Also nachdem ich das Objekt als global eigestuft hab fuktioniert alles
> :).

d.H. Dein Objekt liegt jetzt woanders im Ram, deine fehlerhafte Funktion 
schreibt immer noch wild irgendwo am Stack herum, aber es fällt jetzt 
nicht mehr sofort auf?
Ich seh schon: Dieses Projekt wird dir noch viel Freude bereiten.

> Wie kann ich eine Datei von 2 Programmen gleichzeitig "bearbeiten"
> lassen?

Normalerweise ergibt sich das Problem nicht: Per default können zwei 
Programme dieselbe Datei bearbeiten. Man muss nur Vorkehrungen (locking) 
treffen, wenn man das eben nicht will.
Mag aber sein, dass das unter Windows anders läuft...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren