Bezmislenna greshka

9 отговора 619 прегледа
#1

Bezmislenna greshka

Zna4i kompiliram si programkata s Dev-Cpp v4.980 i suotvetno se izpulniava. A kogato trebe da svurshi pri return 0; mi dava nekakva greshka.
Programata predstavliava installer. Tupoto e 4e izpolzvam c++ samo za proverka na versiite i zadavane na novi instrukcii vuv batch file.
Za susjalenie firewall-a ne pozwoliava ftp dostup ili neshto podobno i ne moga da uploadna source-a. Edinstwenia na4in e ako drasnete edin mail na alexem@abv.bg za da vi otgoworia s attachment. She sum vi mnogo blagodaren.

Отговор
в отговор на alexem #2

Re: Bezmislenna greshka

Някой деструктор ти гърми най-вероятно.

Btw, ако си зад firewall може и да можеш да upload-неш сорса, просто трябва да зададеш да се ползва passive mode. Освен ако не е блокиран порта де.

Отговор
в отговор на Pesho® #3

Re: Bezmislenna greshka

Ne ne sum polzval klasove. Eto go koda:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

int CheckVersion(char *SourceDir);
int SetNewInstructions(int TypeOfInstr, char *SourceDir);


int main(int argc, char *argv[])
{
char SDir[]="E:\\tmp\\carus\\Tausch-Dateien"; // the source dir Windows version
char DosSDir[]="E:\\TMP\\CARUS\\TAUSC~YL"; // the source dir Dos version
int Result;


Result=CheckVersion(SDir);
SetNewInstructions(Result,SDir);
system("PAUSE");
return 0;
}


int CheckVersion(char *SourceDir)
{
FILE *f1;
FILE *f2;
// version variables
float InstalledVersion; // on the pc
float VersionOnNetwork; // on the network
char *VerFile;


f1=fopen("update\\ver.txt","r");
if (f1==NULL)
{
f1=fopen("ver.txt","r");
}

// fill the source ver file string
strcpy(VerFile,SourceDir);
strcat(VerFile,"\\ver.txt");


f2=fopen(VerFile,"r");

if (f2==NULL)
{
printf("f2");
}

fscanf(f1,"%f",&InstalledVersion);
fscanf(f2,"%f",&VersionOnNetwork);

if (InstalledVersion < VersionOnNetwork)
{
printf("Version Checked.. \n Files vertig fuer Instalation \n");
fclose(f1);
fclose(f2);
return 1;

}
else
{
printf("Es gibt kein neues version auf dem server. \n");
fclose(f1);
fclose(f2);
return 0;
}
}

int SetNewInstructions(int TypeOfInstr, char *SourceDir)
{

// Open newinst.bat to add new instructions
FILE* fp;
fp=fopen("update\\newins.bat","w+");

if (TypeOfInstr==1)
{
fprintf(fp,"copy %s\\ver.txt update\\ver.txt \n",SourceDir);
fprintf(fp,"copy %s\\data.exe data.exe \n");
fprintf(fp,"data.exe \n");
fprintf(fp,"pause \n");
fprintf(fp,"del data.exe j \n");

fclose(fp);
return 1;
}

else
{
fclose(fp);
return 0;
}
}


Отговор
в отговор на alexem #4

Re: Bezmislenna greshka

Проверявай преди fclose дали е отворен файла.

Отговор
в отговор на alexem #6

Re:

ami source si izglejda savsem nared...
osven 2 neshta
1. Po malko veroqtnoto:
ne izpolzvai system("PAUSE") a getch();
2.e tva malko ma symnqva

if (f2==NULL)
{
printf("f2");
}
fscanf(f1,"%f",&InstalledVersion);
fscanf(f2,"%f",&VersionOnNetwork);

ako f2 e NULL ti samo go printirash kato greshka i sled tova pak se opitvash da chetesh ot tozi file

sled printf("f2") mojesh da slojesh ili exit(1) ili nekyf return
sichku drugo za sega mi izglejda nared
Adi uspeh

Отговор
в отговор на o(^_^)o #7

Re:

Podobna greshka si naprail i za "f1"

Отговор
в отговор на alexem #8

Re: Bezmislenna greshka

Грешката е доста преди return 0; Просто изобщо не си направил масива за VerFile. Преди

strcpy(VerFile,SourceDir);

трябва да сложиш едно

VerFile = new char[EnoughSpace];

После да не забравиш и да го изтриеш.
Със здраве.

Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Отговор
в отговор на Duncan Griffin #9

Re: Bezmislenna greshka

4ove4e mnogo ti blagodaria, ot dva dni se mu4a vurho tozi problem. Programata mi raboteshe no ne mojeha da ia polzvat shoto davala suobshtenie za greshka. Uff 10x ako ti trebe source code za kniga na posetitelia na php drasni edin mail na [email protected] abe koito iska da drasne de

Отговор
в отговор на alexem #10

c++ standard

i vse pak, za da e tova syvmestim c++ kod, osobeno kato se ima predvid, che tazi versia na dev-c++ e sys gcc 3.2.3, ako si drypnal cialata, redno e da ne pishesh:

#include <stdlib.h>
a
#include <cstdlib>

i t.n. za vsichki standartni C zaglavni files

togava chak deklaraciite popadat v namespace std, koeto bi dalo niakakkyv smisyl na reda

using namespace std

kato osven tova i izvikvaniata stavat extern "C", koeto syshto e zelatelno

Отговор