Błąd Access Violation

problemy z tworzeniem programów do obsługi sieci, internetu, e-mail itp..

Błąd Access Violation

Nowy postprzez Pitek » poniedziałek, 4 stycznia 2010, 17:17

Witam mam sobie funckję aktualizacji może jest ona prowizoryczna i prymitywna ale jest i działa ale nie dokońca nawet nie wiem czemu.
Dziwne jest to że za 1 razem działa bez zarzutu tak jak ma być ale jeżeli podczas jednego działania programu odpali się to drugi raz wyskakuje okienko jak w załączniku.Poniżej przedstawiam kod tej funckji oraz kody okien dodatkowych (proszę o jakąś wyrozumiałość jest on fajnie wyglądający ale może nie w 100% poprawny proszę więc o wytłumaczenie a nie OPR :oops: ):
Kod główny :
Kod: Zaznacz cały
String update;

    IdFTP1->Connect();
    IdFTP1->Get("update.txt", "update.txt", true, false);
    IdFTP1->Disconnect();
    Form5->Show();

    char *Buf = new char[255];

    ifstream infile;
    infile.open("update.txt");
    infile >> Buf;
    infile.close();

    update = Buf;
    delete Buf;
    DeleteFile("update.txt");
    wersja = GetFileVersionInfo(NULL, "FileVersion");
    Form5->Close();
    Boolean Result = SameText(update, wersja);

    if(!Result)
    {
    FormMsg->ShowModal();
    }
    else
    {
      MessageBox(NULL,"Posiadana wersja jest aktualna !","Update",MB_ICONINFORMATION|MB_OK);
    }

Kod okna który dostałem od Cyfrowego Barona przerobiony bo wsumie odszedłem w tym miejscu od linku (ale go używam gdzie indziej) :
Kod: Zaznacz cały
void __fastcall TFormMsg::Button1Click(TObject *Sender)
{
Close();   
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::FormClose(TObject *Sender, TCloseAction &Action)
{
if(zamykanie==true)
{
   Action = caNone;
}
else
{
Action = caFree;
}
if(pobrano==true)
{
ShellExecute(FormMsg->Handle, NULL , "setup.exe", "", "", SW_SHOWNORMAL);
}
Label2->WindowProc = OldLabelH;
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::FormShow(TObject *Sender)
{
Label1->Caption="Dostępna jest nowa aktualizacja programu !\nCzy chcesz dokonać aktualizacji ?";
ProgressBar1->Position=0;
}
//---------------------------------------------------------------------------

void __fastcall TFormMsg::Button2Click(TObject *Sender)
{
Button1->Enabled=false;
zamykanie=true;
ProgressBar1->Visible=true;
IdFTP2->Connect();
ProgressBar1->Max = IdFTP2->Size("setup.exe");
Application->ProcessMessages();
IdFTP2->Get("setup.exe", "setup.exe", true, false);
IdFTP2->Disconnect();

FormMsg->Close();

}
//---------------------------------------------------------------------------

void __fastcall TFormMsg::IdFTP2Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)

{
ProgressBar1->Position = AWorkCount;
Application->ProcessMessages();
}
//---------------------------------------------------------------------------
void __fastcall TFormMsg::IdFTP2WorkEnd(TObject *ASender, TWorkMode AWorkMode)
{
ProgressBar1->Position = ProgressBar1->Max;
pobrano=true;
zamykanie=false;
}
//---------------------------------------------------------------------------

A tutaj kod okna którego użyłem dla fajnego wyglądu i troche dla bajeru ;) :
Kod: Zaznacz cały
void __fastcall TForm5::FormActivate(TObject *Sender)
{
long style = GetWindowLong(ProgressBar1->Handle, GWL_STYLE);
style = style | PBS_MARQUEE;
SetWindowLong(ProgressBar1->Handle, GWL_STYLE, style);

// Rozpoczęcie odliczania
ProgressBar1->Perform(PBM_SETMARQUEE, true, 100);

for(int i = 0; i < 80; i++)
{
  ProgressBar1->Position += 1;
  Sleep(100);
  Application->ProcessMessages();
}

// Zakończenie odliczania
ProgressBar1->Perform(PBM_SETMARQUEE, false, 100);
}
//---------------------------------------------------------------------------

Jeszcze raz proszę o wyrozumiałość oraz pomoc !
Treść okna pojawia się za drugim raze przy jednym otwarciu okna i powtarza się bez końca ale tyko wtedy kiedy jest dostępna aktualizacja bo jeżeli nie to MessageBox informujący o jej braku działa normalnie :
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Błąd Access Violation

Nowy postprzez Cyfrowy Baron » poniedziałek, 4 stycznia 2010, 18:10

W całym tym bałaganie, który tutaj ukazałeś, nie dostrzegam błędu, na który wskazywałby ten komunikat. Masz coś ze zmiennymi lub obiektami, to błąd w dostępnie do pamięci, odwołujesz się do adresu w pamięci, który nie istnieje. Tak mi się wydaje.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Błąd Access Violation

Nowy postprzez Pitek » poniedziałek, 4 stycznia 2010, 18:19

Dorzuce jeszcze coś co pojawia się po kliknięciu Break w środowisku to ta linia :

Result := AutoScroll or (HorzScrollBar.Range <> 0) or (VertScrollBar.Range <> 0);

Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Błąd Access Violation

Nowy postprzez Cyfrowy Baron » poniedziałek, 4 stycznia 2010, 18:21

Nic mi to nie mówi.
Po wywołaniu którego kodu wyskakuje ten błąd?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Błąd Access Violation

Nowy postprzez Pitek » poniedziałek, 4 stycznia 2010, 18:26

Zaczyna się kodem podanym przeze mnie jako pierwszy on potem otwiera kod ostatni a potem środkowy.
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana

Re: Błąd Access Violation

Nowy postprzez Cyfrowy Baron » poniedziałek, 4 stycznia 2010, 18:32

Nie to nigdy tak nie jest. Błąd wywołuje tylko fragment kodu i to musisz zlokalizować, gdyż z Twojego kodu nie wynika, że gdzieś powinien pojawić się taki błąd.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4728
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Błąd Access Violation

Nowy postprzez Pitek » poniedziałek, 4 stycznia 2010, 18:37

To znaczy błąd pojawia się w kodzie nr. 1 bo jak dałem tam try ... catch to mi to wyłapał ale czemu i czemu za 2 razem ?
P.S.Proszę o rozmowę na czacie :)
Komputer służy do tego aby ułatwić Ci pracę, której bez niego w ogóle byś nie miał.
E.Murphy
http://piotrekprogramy.pl
Avatar użytkownika
Pitek
Kreacjusz
Kreacjusz
 
Posty: 290
Dołączył(a): środa, 14 października 2009, 14:53
Lokalizacja: Rybnik/Wrocław
Podziękował : 43
Otrzymał podziękowań: 5
System operacyjny: Win 7 Ultimate 64bit SP1 / Windows 8 Pro 64bit / Ubuntu 14.04 LTS 64bit
Kompilator: Embarcadero RAD Studio XE2
SKYPE: pitek3010
Gadu Gadu: 7060047
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje sieciowe

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron