Qualcuno sa spiegarmi perchè?il problema ho provato a isolarlo commentando quasi tutti sembra essere in questo punto:
m=un altra matrice h*w;
matrice è un **
matrice = new char*[h];
for (int i = 0; i <= h; i++)
matrice[i] = new char[w];
/*for (int i = 0; i <h; i++)
for (int j = 0; j <w; j++)
matrice[i][j] = m[i*w+j];*/
//---------------------------------------------------------------------------
#pragma hdrstop
#include <fstream.h>
#include <time.h>
#include "Unit2.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
char **matrice;
int w, h, i;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Edit1->Text="";
Edit2->Text="";
Edit3->Text="SELEZIONARE UN FILE E POI CLICCARE SU CARICA";
Edit4->Text="";
Edit9->Text="";
Edit5->Text="";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute());
Edit3->Text=OpenDialog1->FileName;
Button2->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
FILE *f;
Edit4->Text="";
Edit5->Text="";
char *m;
char c;
const char* ps = OpenDialog1->FileName.c_str();
f = fopen(ps, "r");
fscanf(f, "%d", &h);
fscanf(f, "%d", &w);
m = new char[w * h];
i = 0;
while(i < w * h)
{
if((c = fgetc(f)) == EOF)
break;
if(c != ' ' && c != 0x0D && c != 0x0A)
{
m[i] = c;
i++;
}
}
matrice = new char*[h];
for (int i = 0; i <= h; i++)
matrice[i] = new char[w];
/*for (int i = 0; i <h; i++)
for (int j = 0; j <w; j++)
matrice[i][j] = m[i*w+j];*/
Edit1->Text=h;
Edit2->Text=w;
//h=righe; w=colonne;
int riga=0;
//String appo="";
int controllo=0;
for (int i = 0; i <h; i++)
{
controllo=0;
for(int j=0;j<w;j++)
{
if(matrice[i][j]=='*')
{
controllo=1;
}
}
riga++;
if(controllo==0) i=h+1;
}
if(controllo==0)
{
Edit4->Text=riga;
for (int j = 0; j <w; j++)
Edit5->Text=Edit5->Text+matrice[riga-1][j];
}
else {
Edit4->Text="NULL";
Edit5->Text="TUTTE LE RIGHE HANNO *"; }
//delete[] m; */
delete[] matrice;
}
//---------------------------------------------------------------------------
/*FILE *stream = NULL;
const char* ps = OpenDialog1->FileName.c_str();
stream = fopen(ps, "r");
Edit3->Text=ps;
int row = 0;
int column = 0;
long int fsize;
char charRead;
char **matrice;
matrice = new char*[40];
for (int i = 0; i < 40; i++)
matrice[i] = new char[40];
fseek(stream, 0, SEEK_END);
fsize = ftell(stream);
fseek(stream, 0, SEEK_SET);
//fsetpos(stream,fgetpos(stream, &filepos));
do {
do {
charRead = fgetc(stream);
if (charRead != ' ')
{
matrice[row][column] = charRead;
column++;
}
} while(charRead != '\n' && ftell(stream) != fsize);
column = 0;
row ++;
} while(ftell(stream) < fsize);
Edit3->Text="";
for (int i = 0; i < 27; i++)
Edit3->Text=Edit3->Text+matrice[0][i];
*/
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Edit6->Text="";
randomize();
for(int i=0;i<w;i++){
Edit6->Text=Edit6->Text+random(2);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender)
{
//exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
/*if (SaveDialog1->Execute())
Edit3->Text=(SaveDialog1->FileName); */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender)
{
//Form2->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
/*if(Edit6->Text.Length()!=w)
{
Edit6->Text="ERRORE:LUNGHEZZA DELL'APLOTIPO";
Edit9->Text="NULL";
}
else
{
Edit8->Text=Edit6->Text;
//Edit8 Aplotipo che cerco
//Edit5 Genotipo i
/* for(int i=0;i<h;i++)
{
Edit4->Text=Edit8->Text;
Edit5->Text="";
for(int j=0;j<w;j++){
Edit5->Text=Edit5->Text+matrice[i][j];}
for(int i=5;i<6;i++)
{
if((geno[i]=='0')&&(aplo[i]=='1'))
break;
if((geno[i]=='1')&&(aplo[i]=='0'))
break;
if((geno[i]=='*')&&(aplo[i]=='1'))
geno[i]='0';
if((geno[i]=='*')&&(aplo[i]=='0'))
geno[i]='1';
}
Edit8->Text=geno;
}
} */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit6Change(TObject *Sender)
{
//Edit9->Text=Edit6->Text.Length();
}
//---------------------------------------------------------------------------