Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Nullpointer Assignment? Was sagt das mir?

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
02.12.2004, 14:47 Uhr
~BennyB
Gast


Wie das Topic schon sagt, frage ich mich woran sowas liegen kann, dass ich eine Meldung bekomme, Nullpointer Assignment.

Mein code wird compilet, wenn ich eine zeile wegmach (egal welche), dann geht es auf einmal wieder oder kann auch sein, dass es dann wenn ich was änder auf einmal nicht mehr geht.

Ich weiß nicht wo anfangen mit suchen, da ich mit der Fehlermeldung nicht allzu viel anfangen kann.

Danke für eure Hilfe.

Grüßer Benny
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.12.2004, 15:45 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ohne code kann man schlecht sagen wo der fehler liegt, für "nullpointer assignment" gibts folgendes zitat:


Zitat:

Somewhere in your program, you assigned a value through a pointer
without first assigning a value to the pointer. (This might have been
something like a strcpy() or memcpy() with a pointer as its first
argument, not necessarily an actual assignment statement.)


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.12.2004, 16:18 Uhr
~BennyB
Gast



C++:
#include <stdio.h>
#include <conio.h>
#include <string.h>

int menue_anzeigen();  //Hauptmenue
int untermenue_anzeigen();  //Untermenue
int create_cmd();  //Nach Installieren 'J', cmd creat



typedef struct
{
  int inst;         //Installation (0=keine | 1=standard | 2=benutzer)
  char name[55];    //Name vom Programm
  char quellpfad[2][120]; //Quellpfad
  char zielpfad[100];    //Zielpfad (Noch nicht integriert
  char progtyp[50];    //Programmtyp d.h. z.b. InternetProgramme
  int temp;        //Temp
  int basic;        //Basicpaket (0=nein | 1=ja)

}vmain;

int xy[2], menue_anzahl, prog_anzahl, inst_progs_anzahl=0;
char menue[47][50];    //Hauptmenue
char cddrive[3];    //CDDrive
int farbe=15;        //Farbe fr Untermenues

vmain mi[120];  //Maximal k”nnen 120 Programme hinzugefgt werden



//********** Hauptfunktions START

int main ()
{

FILE *datei;

int eingabe, i,j=0,k=2, l=0, eingabe_inst, m;

//char inst_programs[120][50];


//*** Standardeinstellungen

flushall();
textmode(C4350);
_setcursortype(0);

textcolor (GREEN); textbackground (0);

xy[0] = 0;
xy[1] = 0;

//*** CD Drive Lesen
datei = fopen ("C:\\drive.txt","r");
fscanf (datei,"%s",&cddrive);
fclose (datei);

//*** Proganzahl und Menueanzahl lesen
datei = fopen ("config.set","r");
fscanf (datei,"%d,%d",&prog_anzahl,&menue_anzahl);
fclose (datei);


//*** Standard Installation keine
for (i=0; i<prog_anzahl; i++)
{
  mi[i].inst = 0;
  mi[i].temp = -1;
}


//*** Progtyp und Name lesen
datei = fopen ("header.set","r");
for (i=0; i<prog_anzahl; i++)
{
  fscanf(datei,"%d\n",&mi[i].basic);
  fgets(mi[i].progtyp,49,datei);
  fgets(mi[i].name,49,datei);
}
fclose (datei);



datei = fopen ("instpfad.set","r");
for (i=0; i<prog_anzahl; i++)
{
  fgets(mi[i].zielpfad,99,datei);
}
fclose (datei);

datei = fopen ("quelpfad.set","r");
for (i=0; i<prog_anzahl; i++)
{
  fgets(mi[i].quellpfad[0],119,datei);
  fgets(mi[i].quellpfad[1],119,datei);
}
fclose (datei);

datei = fopen ("menue.set","r");
for (i=0; i<menue_anzahl; i++)
{
  fgets(menue[i],49,datei);
}
fclose (datei);


//************ Standardeinstellungen geladen


clrscr();

menue_anzeigen();

while (eingabe != 27 && eingabe != 'i')
{
  eingabe = getch();

  if (eingabe == 80 && (xy[1]+1 < menue_anzahl)) xy[1]++;
  if (eingabe == 72 && (xy[1]-1 >= 0)) xy[1]--;
  //if (eingabe == 80 && xy[1]+1 < menue_anzahl) xy[1]++;
  //if (eingabe == 80 && xy[1]+1 < menue_anzahl) xy[1]++;
  if (eingabe == 13)
  {
    clrscr();

    if (strcmp(menue[xy[1]],"INSTALLIEREN\n") == 0)
    {

      for (j=0;j<prog_anzahl;j++)
      {
    if (mi[j].inst == 2) textcolor (YELLOW);
    if (mi[j].inst == 1) textcolor (LIGHTRED);

    if (mi[j].inst > 0)
    {
      gotoxy (k,2+l);
      for (m=0;mi[j].name[m]!='\0';m++)
      {
        if (mi[j].name[m] == '1' && m==0) m++;
        else if (mi[j].name[m] == '2' && m==0) m++;
        else if (mi[j].name[m] == '3' && m==0) m++;
        cprintf ("%c",mi[j].name[m]);
      }
      l++;

      if (l>46)
      {
        k+=30;
        l=0;
      }
    }
      }

      textcolor (WHITE);
      gotoxy (30,50);
      cprintf ("Installieren (J/N)");

      while (eingabe_inst != 'J' && eingabe_inst != 'j'
        && eingabe_inst != 'N' && eingabe_inst != 'n'
        && eingabe_inst != 27)
      {
    eingabe_inst = getch();

    if (eingabe_inst == 'J' || eingabe_inst == 'j')
    {
      create_cmd();
      return 0;
    }
    else if (eingabe_inst == 'N' || eingabe_inst == 'n' || eingabe_inst == 27)
    {
      l = 0; j = 0; k = 2; clrscr();
    }
      }

      eingabe_inst = 'A';

    }

    //***********BASIC Installationspunkt
    else if (strcmp(menue[xy[1]],"BASIC PAKETE\n") == 0)
    {
      gotoxy (23,12); cprintf ("Basic Pakete wurden ausgew„hlt");
      gotoxy (25,14); cprintf ("weiter mit beliebiger Taste");
      getch();
      clrscr();

      for (i=0; i<prog_anzahl; i++)
      {
    if (mi[i].basic == 1) mi[i].inst = 1;
    else if (mi[i].basic == 2) mi[i].inst = 2;
    else mi[i].inst = 0;
      }
    }

    else
    {
      clrscr();
      gotoxy (2,50); textcolor (3); cprintf ("Nicht verfuegbar");
      textcolor (15); cprintf (" | ");
      textcolor (11); cprintf (" Nur Benutzer verfuegbar");
      textcolor (15); cprintf (" | Verfuegbar");
      untermenue_anzeigen();
      clrscr();
    }
  }

  menue_anzeigen();
}


return 0;
}


Dieser Post wurde am 02.12.2004 um 16:49 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
02.12.2004, 16:18 Uhr
~BennyB
Gast



C++:
//************* Funktion Menue anzeigen

int menue_anzeigen()
{
int i;


for (i=0; i<menue_anzahl; i++)
{
  gotoxy (2,2+i);
  textcolor (WHITE);

  if (xy[1] == i)
  {
    textcolor (LIGHTGREEN);
  }

  cprintf ("    %s",menue[i]);

  if (xy[1] == i)
  {
    gotoxy (2,2+i);
    cprintf ("--> ");
  }
}

return 0;
}




//************* Untermenue anzeigen

int untermenue_anzeigen()
{
int i,j=0,k;
int y=0;
int taste;
FILE *datei;

while (taste != 27)
{
  for (i=0; i<prog_anzahl; i++)
  {
    if (strlen(mi[i].quellpfad[0]) < 5 && strlen(mi[i].quellpfad[1]) < 5) farbe = 3;
    else if (strlen(mi[i].quellpfad[0]) < 5 && strlen(mi[i].quellpfad[1]) > 5) farbe = 11;
    else {farbe = 15;}

    if (strcmp(menue[xy[1]],mi[i].progtyp) == 0)
    {
      textcolor (farbe);

      if (j == y)
      {
    textcolor (LIGHTGREEN);
      }

      gotoxy (2,2+j);
      cprintf ("[ ] ");

      if (strlen(mi[i].quellpfad[0]) < 5 && strlen(mi[i].quellpfad[1]) < 5) farbe = 3;
      else if (strlen(mi[i].quellpfad[0]) < 5 && strlen(mi[i].quellpfad[1]) > 5) farbe = 11;
      else {farbe = 15;}

      textcolor (farbe);

      for (k=0; mi[i].name[k]!='\0';k++)
      {
    if (mi[i].name[k] == '1' && k==0) k++;
    else if (mi[i].name[k] == '2' && k==0) k++;
    else if (mi[i].name[k] == '3' && k==0) k++;
    cprintf ("%c",mi[i].name[k]);
      }

      if (mi[i].inst == 1)
      {
    textcolor (LIGHTRED);
    gotoxy (3,2+j);
    cprintf ("S");
      }
      else if (mi[i].inst == 2)
      {
    textcolor (YELLOW);
    gotoxy (3,2+j);
    cprintf ("B");
      }

      mi[i].temp = j;
      j++;
    }
  }

  taste = getch();

  if (taste == 80 && y+1 < j) y++;
  if (taste == 72 && y-1 >= 0) y--;

  if (taste == 13 || taste == 32)
  {
    for (i=0; i<prog_anzahl; i++)
    {
      if (mi[i].temp == y)
      {

    if (mi[i].inst == 0)
    {
      if (strlen(mi[i].quellpfad[0]) > 5) mi[i].inst = 1;
      else if (strlen(mi[i].quellpfad[1]) > 5) mi[i].inst = 2;
    }

    else if (mi[i].inst == 1)
    {
      if (strlen(mi[i].quellpfad[1]) > 5) mi[i].inst = 2;
      else {mi[i].inst = 0;}
    }

    else if (mi[i].inst == 2)
    {
      mi[i].inst = 0;
    }

    inst_progs_anzahl++;
      }
    }
  }

  else if (taste == 'a' || taste == 'A')
  {
    for (i=0; i<prog_anzahl; i++)
    {
      if (mi[i].temp == y)
      {
    datei = fopen ("basic.set","a");
    fprintf (datei,"%s",mi[i].name);
    fclose (datei);

    clrscr();
    gotoxy (25,24);
    cprintf ("Zu Basic Paket hinzugefuegt");
    gotoxy (25,26);
    cprintf ("Weiter mit beliebiger Taste");
    getch();
    clrscr();
      }
    }
  }

  j=0;
}

for (i=0; i<prog_anzahl; i++) mi[i].temp = -1;

return 0;
}




//**************** Batch Datei erzeugen


int create_cmd()
{
FILE *datei, *datei2;
char inst_programs[120][50];
int j=0, k=0, l;
int art_inst[120];
char eingabe__[2];
char temp_name[50];
char temp_progtyp[30];

eingabe__[0]='A';

while (eingabe__[0] != 'j' && eingabe__[0] != 'J' && eingabe__[0] != 'n' && eingabe__[0] != 'N')
{
  clrscr();
  gotoxy (10,24);
  cprintf ("(multinst\\backg.bmp) Hintergrundbild aktiv setzten? (J/N) ");
  scanf ("%c",&eingabe__[0]);

  if (eingabe__[0] == 'j' || eingabe__[0] == 'J')
  {
    datei = fopen ("c:\\backg.set","w");
    fclose (datei);
  }
}

eingabe__[0] = 'A';

while (eingabe__[0] != 'j' && eingabe__[0] != 'J' && eingabe__[0] != 'n' && eingabe__[0] != 'N')
{
  gotoxy (10,26);
  cprintf ("Setupdateien lokal auf C:\\install speichern? (J/N) ");
  scanf ("%c",&eingabe__[0]);

  if (eingabe__[0] == 'j' || eingabe__[0] == 'J')
  {
    datei2 = fopen ("c:\\kopieren.cmd","w");
    fprintf (datei2,"mkdir c:\\install\n");
  }
}


datei = fopen ("C:\\install.set","r");

for (j=0; j<=inst_progs_anzahl; j++)
{
fscanf (datei, "%d\n", &art_inst[j]);
fgets (inst_programs[j],49,datei);
}

fclose (datei);



datei = fopen ("C:\\install.cmd","w");

fprintf (datei,"@echo off\n");

for (j=0; j<prog_anzahl; j++)
{
  if (mi[j].inst == 2)
  {
    fprintf (datei,"echo Benutzerdefinierte - Installation ... %s",mi[j].name);
    fprintf (datei,"start /w /MIN %s%s",cddrive,mi[j].quellpfad[1]);

    if (eingabe__[0] == 'j' || eingabe__[0] == 'J')
    {
      for (k=0;k>=0;k++)
      {
    if (mi[j].progtyp[k]=='\n') break;
    temp_progtyp[k] = mi[j].progtyp[k];
      }

      for (k=0;k>=0;k++)
      {
    if (mi[j].name[k]=='\n') break;
    temp_name[k] = mi[j].name[k];
      }

      fprintf (datei2, "xcopy /E /Y /EXCEPT:install.cmd+binstall.cmd+install.vbs %s\\multinst\\install\\%s\\%s c:\\install\\%s\n",cddrive,temp_progtyp, temp_name, temp_name);
    }
  }
}


for (j=0; j<prog_anzahl; j++)
{
  if (mi[j].inst == 1)
  {
    fprintf (datei, "echo Standard - Installation ... %s",mi[j].name);
    fprintf (datei, "start /w /MIN %s%s",cddrive,mi[j].quellpfad[0]);

    if (eingabe__[0] == 'j' || eingabe__[0] == 'J')
    {
      for (k=0;k>=0;k++)
      {
    if (mi[j].progtyp[k]=='\n') break;
    temp_progtyp[k] = mi[j].progtyp[k];
      }

      for (k=0;k>=0;k++)
      {
    if (mi[j].name[k]=='\n') break;
    temp_name[k] = mi[j].name[k];
      }

      fprintf (datei2, "xcopy /E /Y /EXCEPT:install.cmd+binstall.cmd+install.vbs %s\\multinst\\install\\%s\\%s c:\\install\\%s\n",cddrive,temp_progtyp, temp_name, temp_name);
    }
  }
}

if (eingabe__[0] == 'j' || eingabe__[0] == 'J')
{
  fprintf (datei, "echo Setupdateien werden auf C:\\Install kopiert\n");
  fprintf (datei, "@echo off\n");
  fprintf (datei, "start /w /MIN c:\\kopieren.cmd\n");
//  fprintf (datei2, "del /s c:\\install\\install.cmd c:\\install\\binstall.cmd c:\\install\\install.vbs\n");
  fprintf (datei2, "exit");
  fclose (datei2);
}

fprintf (datei, "exit");
fclose (datei);


return 0;
}




Mein Code. Frag nicht was ich machen will und tut mir leid, dass er nicht richtig kommentiert ist, ich bin noch nicht so weit, dass ich Ihn kommentieren will, mach ich meist gegen Ende meiner Programmierung (ich weiß, is nicht gut).

Vielleicht hast du ja Lust mal durch den Code dich zu kämpfen. thx a lot (zitat ende)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.12.2004, 16:19 Uhr
~BennyB
Gast


Problem liegt wahscheinlich im Teil

create_cmd
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.12.2004, 21:20 Uhr
~BennyB
Gast


Habe nun Teile des Quellcodes in den Borland Builder übertragen, dieser bringt folgende Fehlermeldung


Code:
Im Projekt ist ein EAccessViolation aufgetreten. Zugriffsverletzung bei Addresse...



C++:
if (fgets(basic[i],49,datei) == 0) break;
 
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: