Problem z OpenDialog

dział ogólny

Problem z OpenDialog

Nowy postprzez Bishamoth » wtorek, 9 czerwca 2009, 22:55

I wszystko dziala poprawnie :) A teraz takie moje male pytanie do tego; jak dorobic zamiast TDriveComboBox, TFileListBox oraz TDirectoryListBox zwykle TOpenDialog?
Probowalem to zrobic tak:
Kod: Zaznacz cały
OpenDialog1->InitialDir = "d:\\"; //katalog poczÄ…tkowy
if(OpenDialog1->Execute())
{
if(!OpenDialog1->FileName.IsEmpty())
{
Text->Lines->LoadFromFile(OpenDialog1->FileName.c_str());
Text->Lines->Add(OpenDialog1->FileName.c_str());
}
}

Lecz wywala bledy tak jak w pierwszym poscie :roll:

Text z kodu to obiekt TMemo
Ostatnio edytowano środa, 10 czerwca 2009, 08:46 przez Cyfrowy Baron, łącznie edytowano 1 raz
Powód: Nie tworzymy wątków tasiemców, lecz każdy temat oddzielnie, dlatego wątek został podzielony
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Cyfrowy Baron » Å›roda, 10 czerwca 2009, 08:53

Po pierwsze i przede wszystkim funkcje LoadFromFile i Add obiektu Memo oczekują wartości typu AnsiString, wartość FileName obiektu OpenDialog jest typu AnsiString, więc konwersja tych wartości na typ char (.c_str()) jest błędem.

Kod: Zaznacz cały
     OpenDialog1->InitialDir = "d:\\"; //katalog poczÄ…tkowy
    if(OpenDialog1->Execute())
    {
    if(!OpenDialog1->FileName.IsEmpty())
    {
    Text->Lines->LoadFromFile(OpenDialog1->FileName); // tutaj poprawiÅ‚em
    Text->Lines->Add(OpenDialog1->FileName);               // i tutaj też poprawiÅ‚em
    }
    }


Ustawianie InitialDir na dysk D:\ może okazać się niegroźnym błędem jeżeli ktoś nie będzie miał u siebie tego dysku.



Po wtóre kod który tutaj przytoczyłeś błędu nie zawiera i u mnie np. działa prawidłowo, więc błędy występują tylko u Ciebie, ale są związane z innym kodem.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Bishamoth » Å›roda, 10 czerwca 2009, 15:25

Coz, poprawione, blad nadal jest. Moze od razu pokaze caly kod:

Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->InitialDir = "d:\\"; //katalog poczÄ…tkowy
if(OpenDialog1->Execute())
{
if(!OpenDialog1->FileName.IsEmpty())
{
Text->Lines->LoadFromFile(OpenDialog1->FileName.c_str());
Text->Lines->Add(OpenDialog1->FileName.c_str());
}
}

int ile=FileSeek(UchwytOdczyt,0,2);

FileSeek(UchwytOdczyt,0,0);

LPVOID adres=VirtualAlloc(0,ile,MEM_COMMIT,PAGE_READWRITE);

FileRead(UchwytOdczyt,adres,ile);

BYTE *i8;
WORD *i16;
DWORD *i32;

i8=(BYTE *)adres+60;
i8=(BYTE *)adres+ *(WORD *)i8;

switch (*(DWORD *)i8){
                      case 0x4550:Text->Lines->Add("This is PE file format");break;

                      default:Text->Lines->Add("This not PE file");
                              return;
                      }
i16=(WORD *)i8+2;
Text->Lines->Add("Designed for (0x"+ IntToHex(*i16,4)+"):");
switch (*i16) {
        case 0x14c:
        Text->Lines->Add(" Intel 80386 processor or better");
        Procesor->ItemIndex=0;
        break;
        case 0x014d:
        Text->Lines->Add(" Intel 80486 processor or better");
        Procesor->ItemIndex=1;
        break;
        case 0x014e:
        Text->Lines->Add(" Intel Pentium processor or better");
        Procesor->ItemIndex=2;
        break;
        case 0x014f:
        Text->Lines->Add(" Intel Pentium Pro processor or better");
        Procesor->ItemIndex=3;
        break;
        default:
        Text->Lines->Add(" not known to me processor");
        Procesor->ItemIndex=4;
        break;
        }
i16++; byte IleSekcji=(BYTE)*i16;
Text->Lines->Add("We have "+ (AnsiString)*i16 +" sections in file");
i16++;i32=(DWORD *)i16;
Text->Lines->Add("*Time stamp is:  "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
Text->Lines->Add("*(This means programm was compiled "+ (AnsiString)*i32 +" seconds after January 1 1970 00:00:00)");
i16=i16+6;
Text->Lines->Add("Size of optional header: "+ (AnsiString)*i16+"  (0x"+IntToHex(*i16,4)+")");
i16++; char lancuch[16]; itoa(*i16,lancuch,2);
Text->Lines->Add("Characteristics flags: "+ (AnsiString)*i16+"  ("+(AnsiString)lancuch+"b)");
i16++;

Text->Lines->Add("Magic value (should be 0x010B): 0x"+IntToHex(*i16,4));
i16++;i8=(BYTE *)i16;
Text->Lines->Add("Linker version: "+(AnsiString)*i8+"."+(AnsiString)*(i8+1));
i16++;i32=(DWORD *)i16;
Text->Lines->Add("*Size of code: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("*Size of initialized data (data segment): "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("*Size of uninitialized data (bss segment): "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;;
Text->Lines->Add("Relative Virtual Addresses (execution starts here): "+ (AnsiString)*i32+"  (0x"+IntToHex((__int64)*i32,4)+")");
i32++;
Text->Lines->Add("Code offset: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Data offset: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Preffered load address: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Section alignment: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("File alignment: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;i16=(WORD *)i32;
// System version
i16++;i16++;
// Programm version
i16++;i16++;
// Subsystem version
i16++;i16++;i32=(DWORD *)i16;
//Win32VersionValue
i32++;
Text->Lines->Add("Size of image: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of headers: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Checksum : "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;i16=(WORD *)i32;
//'Subsystem' that tells in which of the NT-subsystems the image runs:
i16++;
//dll info
i16++;i32=(DWORD *)i16;
Text->Lines->Add("Size of reserved stack: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of initially committed stack: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of the reserved heap: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of the committed heap: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++; char lancuch2[32]; itoa(*i32,lancuch2,2);
Text->Lines->Add("Loader flags: "+ (AnsiString)lancuch2+"b");
i32++;
Text->Lines->Add("*Number of valid entries in the directories : "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,4)+")");
i32++;
i32=i32+32;
Text->Lines->Add(" ");
Text->Lines->Add("Now the list of sections:");
Text->Lines->Add(" ");
char lancuch3[8]; *(lancuch3+8)=0;
for (BYTE i=1;i<=IleSekcji;i++)
{
Text->Lines->Add("Section number "+(AnsiString)i);
memcpy((void *)lancuch3,(void *)i32,8);
Text->Lines->Add("      Section Name: "+ (AnsiString)lancuch3);
i32++;i32++;
Text->Lines->Add("      Virtual size: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Virtual address: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Size of raw data: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Pointer to raw data: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Pointer to relocations: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Pointer to linenumbers: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;i16=(WORD *)i32;
Text->Lines->Add("      Number of relocations: "+ (AnsiString)*i16 +"  (0x"+IntToHex((__int64)*i16,4)+")");
i16++;
Text->Lines->Add("      Number of linenumbers: "+ (AnsiString)*i16 +"  (0x"+IntToHex((__int64)*i16,4)+")");
i16++;i32=(DWORD *)i16;itoa(*i32,lancuch2,2);
Text->Lines->Add("      Flags: "+ (AnsiString)lancuch2+"b");
i32++;
Text->Lines->Add("End of section "+(AnsiString)i);
Text->Lines->Add(" ");
}
Text->Lines->Add(" ");
Text->Lines->Add(" * This values are unreliable (could be wrong I mean). Some compilers put magic stuff there.");



//zamykamy plik i dealokujemy pamiec
FileClose(UchwytOdczyt);
VirtualFree(adres,0,MEM_RELEASE);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
UchwytZapis=FileOpen(NazwaPliku,fmOpenReadWrite);
if (UchwytZapis==-1)
{
Application->MessageBox("blad otwarcia pliku","Blad",IDOK);
return;
}

int gdzie;
int procek;
FileSeek(UchwytZapis,60,0);
FileRead(UchwytZapis,&gdzie,2);
FileSeek(UchwytZapis,gdzie+4,0);

switch (Procesor->ItemIndex) {
        case 0:
        procek=0x014c;
        break;
        case 1:
        procek=0x014d;
        break;
        case 2:
        procek=0x014e;
        break;
        case 3:
        procek=0x014f;
        break;
        default:
        procek=random(65535);
        break;
        }

//zapisujemy informacje o procesorze
FileWrite(UchwytZapis,&procek,2);


FileClose(UchwytZapis);
}
//---------------------------------------------------------------------------


Wszystko powinno dzialac, bez przerwy jest ten sam blad co na samym poczatku :roll: Oryginalny kod nieprzerobiony chodzi bez problemu. A ja chcialem tylko dodac funkcje dodawania plikow przez komponent TOpenDialog :roll:
Przytaczam od razu blad z poprzedniego tematu by nie latac:
Obrazek
I wskazuje na linijke:
Kod: Zaznacz cały
i8=(BYTE *)adres+ *(WORD *)i8;

Po czym wywala drugi blad:

Obrazek
A sam program pozostaje nadal wlaczony, lecz nic nie robi...
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Cyfrowy Baron » Å›roda, 10 czerwca 2009, 15:48

Coz, poprawione,


niczego nie poprawiłeś nadal masz:

Kod: Zaznacz cały
Text->Lines->LoadFromFile(OpenDialog1->FileName.c_str());
Text->Lines->Add(OpenDialog1->FileName.c_str());


to jednak będzie mimo wszystko działać i nie wywoła błędu.



Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;


Nie dołączyłeś do swojego projektu tych bibliotek:

Kod: Zaznacz cały
#include <stdlib.h>
#include <stdio.h>




Przerabiając kod zapomniałeś o wielu elementach, jak chociażby o konieczności otwarcia pliku:

Kod: Zaznacz cały
UchwytOdczyt=FileOpen(ListaPlikow->FileName,fmOpenRead);
if (UchwytOdczyt==-1) return;


bez tego raczej nie uzyskasz dostępu do pliku.



Zanim ponownie napiszesz dokładnie przeanalizuj swój kod, gdyż jest tak jak napisałem wcześniej: to nie ma żadnego związku z OpenDialog.
Analizując ściagnięty projekt nie zapomnij dokładnie przeanalizować pliku nagłówkowego, czyli Main.h
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Bishamoth » poniedziaÅ‚ek, 15 czerwca 2009, 00:15

Cyfrowy Baron napisał(a):
Kod: Zaznacz cały
UchwytOdczyt=FileOpen(ListaPlikow->FileName,fmOpenRead);
if (UchwytOdczyt==-1) return;

bez tego raczej nie uzyskasz dostępu do pliku.

ListaPlikow ? Co to za zmienna?
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 15 czerwca 2009, 15:47

Ścieżka dostępu z nazwą pliku który otwierasz. Przekopiowałem to z oryginalnego pliku, który ściągnąłeś.
W twoim przypadku powinno chyba być:

Kod: Zaznacz cały
UchwytOdczyt = FileOpen(OpenDialog1->FileName.c_str(), fmOpenRead);
if (UchwytOdczyt==-1) return;


ale nie jestem pewien, gdyż nie śledzę Twoich poczynać na bieżąco.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Bishamoth » poniedziaÅ‚ek, 15 czerwca 2009, 18:14

Prosze bardzo:
Kod: Zaznacz cały
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <stdlib.h>
#include <stdio.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->InitialDir = "d:\\"; //katalog poczÄ…tkowy
if(OpenDialog1->Execute())
{
//if(!OpenDialog1->FileName.IsEmpty())
//{
//Text->Lines->LoadFromFile(OpenDialog1->FileName);
//Text->Lines->Add(OpenDialog1->FileName);
//}
}

int ile=FileSeek(UchwytOdczyt,0,2);

FileSeek(UchwytOdczyt,0,0);

LPVOID adres=VirtualAlloc(0,ile,MEM_COMMIT,PAGE_READWRITE);

FileRead(UchwytOdczyt,adres,ile);

BYTE *i8;
WORD *i16;
DWORD *i32;

i8=(BYTE *)adres+60;
i8=(BYTE *)adres+ *(WORD *)i8;

switch (*(DWORD *)i8){
                      case 0x4550:Text->Lines->Add("This is PE file format");break;

                      default:Text->Lines->Add("This not PE file");
                              return;
                      }
i16=(WORD *)i8+2;
Text->Lines->Add("Designed for (0x"+ IntToHex(*i16,4)+"):");
switch (*i16) {
        case 0x14c:
        Text->Lines->Add(" Intel 80386 processor or better");
        Procesor->ItemIndex=0;
        break;
        case 0x014d:
        Text->Lines->Add(" Intel 80486 processor or better");
        Procesor->ItemIndex=1;
        break;
        case 0x014e:
        Text->Lines->Add(" Intel Pentium processor or better");
        Procesor->ItemIndex=2;
        break;
        case 0x014f:
        Text->Lines->Add(" Intel Pentium Pro processor or better");
        Procesor->ItemIndex=3;
        break;
        default:
        Text->Lines->Add(" not known to me processor");
        Procesor->ItemIndex=4;
        break;
        }
i16++; byte IleSekcji=(BYTE)*i16;
Text->Lines->Add("We have "+ (AnsiString)*i16 +" sections in file");
i16++;i32=(DWORD *)i16;
Text->Lines->Add("*Time stamp is:  "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
Text->Lines->Add("*(This means programm was compiled "+ (AnsiString)*i32 +" seconds after January 1 1970 00:00:00)");
i16=i16+6;
Text->Lines->Add("Size of optional header: "+ (AnsiString)*i16+"  (0x"+IntToHex(*i16,4)+")");
i16++; char lancuch[16]; itoa(*i16,lancuch,2);
Text->Lines->Add("Characteristics flags: "+ (AnsiString)*i16+"  ("+(AnsiString)lancuch+"b)");
i16++;

Text->Lines->Add("Magic value (should be 0x010B): 0x"+IntToHex(*i16,4));
i16++;i8=(BYTE *)i16;
Text->Lines->Add("Linker version: "+(AnsiString)*i8+"."+(AnsiString)*(i8+1));
i16++;i32=(DWORD *)i16;
Text->Lines->Add("*Size of code: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("*Size of initialized data (data segment): "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("*Size of uninitialized data (bss segment): "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;;
Text->Lines->Add("Relative Virtual Addresses (execution starts here): "+ (AnsiString)*i32+"  (0x"+IntToHex((__int64)*i32,4)+")");
i32++;
Text->Lines->Add("Code offset: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Data offset: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Preffered load address: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Section alignment: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("File alignment: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;i16=(WORD *)i32;
// System version
i16++;i16++;
// Programm version
i16++;i16++;
// Subsystem version
i16++;i16++;i32=(DWORD *)i16;
//Win32VersionValue
i32++;
Text->Lines->Add("Size of image: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of headers: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Checksum : "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;i16=(WORD *)i32;
//'Subsystem' that tells in which of the NT-subsystems the image runs:
i16++;
//dll info
i16++;i32=(DWORD *)i16;
Text->Lines->Add("Size of reserved stack: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of initially committed stack: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of the reserved heap: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("Size of the committed heap: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++; char lancuch2[32]; itoa(*i32,lancuch2,2);
Text->Lines->Add("Loader flags: "+ (AnsiString)lancuch2+"b");
i32++;
Text->Lines->Add("*Number of valid entries in the directories : "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,4)+")");
i32++;
i32=i32+32;
Text->Lines->Add(" ");
Text->Lines->Add("Now the list of sections:");
Text->Lines->Add(" ");
char lancuch3[8]; *(lancuch3+8)=0;
for (BYTE i=1;i<=IleSekcji;i++)
{
Text->Lines->Add("Section number "+(AnsiString)i);
memcpy((void *)lancuch3,(void *)i32,8);
Text->Lines->Add("      Section Name: "+ (AnsiString)lancuch3);
i32++;i32++;
Text->Lines->Add("      Virtual size: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Virtual address: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Size of raw data: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Pointer to raw data: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Pointer to relocations: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;
Text->Lines->Add("      Pointer to linenumbers: "+ (AnsiString)*i32 +"  (0x"+IntToHex((__int64)*i32,8)+")");
i32++;i16=(WORD *)i32;
Text->Lines->Add("      Number of relocations: "+ (AnsiString)*i16 +"  (0x"+IntToHex((__int64)*i16,4)+")");
i16++;
Text->Lines->Add("      Number of linenumbers: "+ (AnsiString)*i16 +"  (0x"+IntToHex((__int64)*i16,4)+")");
i16++;i32=(DWORD *)i16;itoa(*i32,lancuch2,2);
Text->Lines->Add("      Flags: "+ (AnsiString)lancuch2+"b");
i32++;
Text->Lines->Add("End of section "+(AnsiString)i);
Text->Lines->Add(" ");
}
Text->Lines->Add(" ");
Text->Lines->Add(" * This values are unreliable (could be wrong I mean). Some compilers put magic stuff there.");



//zamykamy plik i dealokujemy pamiec
FileClose(UchwytOdczyt);
VirtualFree(adres,0,MEM_RELEASE);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
UchwytOdczyt = FileOpen(OpenDialog1->FileName.c_str(), fmOpenRead);
if (UchwytOdczyt==-1) return;
{
Application->MessageBox("blad otwarcia pliku","Blad",IDOK);
return;
}

int gdzie;
int procek;
FileSeek(UchwytZapis,60,0);
FileRead(UchwytZapis,&gdzie,2);
FileSeek(UchwytZapis,gdzie+4,0);

switch (Procesor->ItemIndex) {
        case 0:
        procek=0x014c;
        break;
        case 1:
        procek=0x014d;
        break;
        case 2:
        procek=0x014e;
        break;
        case 3:
        procek=0x014f;
        break;
        default:
        procek=random(65535);
        break;
        }

//zapisujemy informacje o procesorze
FileWrite(UchwytZapis,&procek,2);


FileClose(UchwytZapis);
}
//---------------------------------------------------------------------------


Niech ktos mi powie czemu sie wysypuje program podczas ladowania samego pliku?
Avatar użytkownika
Bishamoth
Bladawiec
Bladawiec
 
Posty: 40
Dołączył(a): niedziela, 1 marca 2009, 22:51
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
System operacyjny: Windows XP Pro SP3
Kompilator: C++ Builder 6
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez banita » wtorek, 16 czerwca 2009, 01:07

spakuj i zamiesc ten proejkt wlacznie z jakims przykladowym plikiem ktory otwierasz.
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z OpenDialog

Nowy postprzez Cyfrowy Baron » wtorek, 16 czerwca 2009, 08:40

Tylko przed spakowaniem usuń z niego wszystkie pliki tymczasowe, gdyż nie zmieści się na forum.

pliki tymczasowe:
*.~??
*.~?
*.obj
*.tds
*.#??
*.pch
*.ilc
*.ild
*.ils
*.ilf

gdzie ? to dowolny znak.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

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