CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Problem z AutoRun

Problem z AutoRun

dział ogólny

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » poniedziałek, 25 kwietnia 2011, 09:05

brando napisał(a):Chodzi mi o to, żeby w funkcji kliknięcia w przycisk Zainstaluj lokalizacje przypisywały się po kolei do tych przycisków np Przycisk_Zainstaluj[0] ma lokalizację do pierwszego programu z danej kategorii i uruchamia go. Mi na razie udało się zrobić tak, że przypisują się wszystkie programy. Niestety uruchamiają się nadal foldery, a pliki *.exe nie chcą się uruchamiać.


Masz jedno zdarzenie Zainstaluj, ale chcesz, żeby działało jak wiele zdarzeń. Zastanów się gdzie jest błąd! Jeżeli program się nie uruchamia, to znaczy, że ścieżka do tego programu jest nieprawidłowa, czyli źle składasz ścieżkę. Sprawdź co zawiera ścieżka, gdy uruchamiasz zdarzenie, a wyłapiesz błąd:

KOD cpp:     UKRYJ  
void __fastcall TForm1::Zainstaluj(TObject *Sender)
{
 Szukane = "*.exe";

 String sAppDir = ExtractFilePath(ParamStr(0));

 String sFullPath = sAppDir + "Kategorie Programów\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\" + Nazwa_Programu[i] + "\\" + Szukane;

 ShowMessage( sFullPath );

 ShellExecute(Form1->Handle, NULL , sFullPath.c_str(), "", "", SW_SHOWNORMAL);

}


Po każdym kliknięciu zostanie wyświetlony komunikat ze ścieżką dostępu przekazywaną funkcji ShellExecute. Sprawdzając co zawiera ścieżka, dojdziesz do tego, gdzie jest w niej błąd.

brando napisał(a):Ehhh.. już nie wiem co robię źle.


Nie wiesz, bo nie rozumiesz kodu!

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
brando
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez brando » poniedziałek, 25 kwietnia 2011, 21:40

Już sobie poradziłem, a mianowicie dodałem szukanie pliku exe, bo gdy było to tylko w forze to zamiast pliku exe ShowMessage pokazywał mi ścieżkę i *.exe, po prostu traktował to jak ciąg znaków, a nie dowolny ciąg. Żeby mieć nr przycisku dodałem funkcje Tag.

KOD cpp:     UKRYJ  
Przycisk_Zainstaluj_X86[i] - > Tag = i;                          // przy tworzeniu obiektów

//---------------------------------------------

void __fastcall TForm1::Zainstaluj_X86(TObject *Sender)
{
int Tag = dynamic_cast<TComponent *>(Sender) - > Tag;
int i;
Szukane="[X86*.*";

 Katalog=sAppDir + "Kategorie Programów" + "\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\" + ListBox3->Items->Strings[Tag] + "\\";
 if(FindFirst(Katalog + Szukane, faAnyFile, Search) == 0)
     {
      do
      {
  ShellExecute(Form1->Handle, NULL , (Katalog+Search.Name).c_str(), "", "", SW_SHOWNORMAL);
        }
        while(FindNext(Search) == 0);
        FindClose(Search);
     }
}
 


Dzięki za pomoc Cyfrowy Baron, bardzo mi pomogłeś.
Avatar użytkownika
brando
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): czwartek, 21 kwietnia 2011, 23:24
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows XP, 7
Kompilator: C++ Builder 6
Gadu Gadu: 1148942
    Windows 7Firefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » wtorek, 26 kwietnia 2011, 08:31

Rozwiązanie z Tag jest poprawne, ale to rozwiązanie z szukaniem pliku jest co najmniej nieporozumieniem, skoro ścieżkę można złożyć bez tego szukania. Wszak wszystkie niezbędne do tego dane masz w ListBox-ach. Po co więc szukasz???

brando napisał(a):a mianowicie dodałem szukanie pliku exe, bo gdy było to tylko w forze to zamiast pliku exe ShowMessage pokazywał mi ścieżkę i *.exe,


Więc pomiędzy nazwę katalogu i ".exe" wstaw nazwę pliku.
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez brando » wtorek, 26 kwietnia 2011, 22:04

Szukam, ponieważ muszę znaleźć odpowiedni plik. Każdy program ma inną nazwę, więc nie mogę sobie wpisać np. Setup.exe, bo nic mi się nie uruchomi. Każdy program jest w oddzielnym folderze.
Avatar użytkownika
brando
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): czwartek, 21 kwietnia 2011, 23:24
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows XP, 7
Kompilator: C++ Builder 6
Gadu Gadu: 1148942
    Windows 7Firefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » środa, 27 kwietnia 2011, 08:33

Jednakże, czy nazwy programów jak i katalogi lokalizacji nie są przechowywane na listach ListBox?
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez brando » środa, 27 kwietnia 2011, 19:43

Kategorie Programów -> Foldery, których nazwa to dana kategoria -> są w ListBoxie1
Programy -> Foldery, których nazwa to dany program -> są w ListBoxie3
Więc muszę wyszukać dany program składając taką ścieżkę: Główny_Katalog/Kategorie Programów/Kategorie_w_ListBoxie1/Programy_w_ListBoxie3/Jakiś_Program.exe
Avatar użytkownika
brando
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): czwartek, 21 kwietnia 2011, 23:24
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows XP, 7
Kompilator: C++ Builder 6
Gadu Gadu: 1148942
    Windows 7Firefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » czwartek, 28 kwietnia 2011, 08:32

brando napisał(a):Programy -> Foldery, których nazwa to dany program -> są w ListBoxie3


Nie wiem czy dobrze zrozumiałem, ale wychodzi mi, że w ListBox3 są przechowywane nazwy katalogów (folderów) dokładnie takie jak nazwa programu, który się w tym katalogu znajduje, czyli np: program nazwa się MyProgram.exe, więc mam: Kategoria\MyProgram\MyProgram.exe, czy tak?
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez brando » piątek, 29 kwietnia 2011, 01:25

No właśnie nie za bardzo tak by mogło być, bo mam tak ponazywana programy: Nazwa_Programu Wersja_Programu.exe , a wersja w każdym programie jest inna.
Avatar użytkownika
brando
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): czwartek, 21 kwietnia 2011, 23:24
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows XP, 7
Kompilator: C++ Builder 6
Gadu Gadu: 1148942
    Windows 7Firefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » piątek, 29 kwietnia 2011, 09:02

brando napisał(a):Nazwa_Programu Wersja_Programu.exe


Tak jest w ListBox3??? Jeżeli tak to odseparuj nazwę programu od jego wersji.
Tak wogóle to pisząc o czymś podawaj przykłady, czyli np. jak to wygląda na liście.
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez brando » piątek, 29 kwietnia 2011, 14:37

Ok, to przedstawię to tak. Lokalizacja do pliku *.exe wygłąda tak:
Kod: Zaznacz cały
               w ListBox1          w ListBox3
                       ^          ^
                       |          |
Kategorie Programów\Kategoria\Program\Program_Wersja.exe


Mógłbym zrobić szukanie tych plików *.exe w zdarzeniu kliknięcia na ListBox1, ale gdy dodaje kod z wyszukiwaniem (po wyszukaniu folderów programów i umieszczeniu ich w ListBox3) to wyszukuje mi tylko 1 program w każdej kategorii.
Avatar użytkownika
brando
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): czwartek, 21 kwietnia 2011, 23:24
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows XP, 7
Kompilator: C++ Builder 6
Gadu Gadu: 1148942
    Windows 7Firefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » piątek, 29 kwietnia 2011, 14:48

Nie odpowiadasz na pytania. Pokaż przykład zawartości list w ListBox1 i ListBox3 i daj spokój z tymi ścieżkami.
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez brando » piątek, 29 kwietnia 2011, 15:44

Ok, to daje cały kod źródłowy:

KOD cpp:     UKRYJ  
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
 TForm1 *Form1;
 TSearchRec Search;
 String Szukane;
 String Katalog;
 String sAppDir = ExtractFilePath( ParamStr(0) );
//---------------------------------------------------------------------------
// Szukanie Kategorii, dodanie ich do ListBox1
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Form1->ListBox1->Items->Clear();
 int i;
  if (FindFirst(sAppDir + "\\Kategorie Programów\\*.*", faDirectory, Search) == 0)
     {
      do{
         if(((Search.Attr & faDirectory) > 0) & (Search.Name != ".") & (Search.Name != ".."))
            Form1->ListBox1->Items->Add(Search.Name);
        }
        while(FindNext(Search) == 0);
        FindClose(Search);
     }
}
//------------------------------------------------------------
// Tworzenie obiektów
void __fastcall TForm1::CreateNewObjects(int i, String sAppName)
{
  Panel_Programu[i] = new TPanel(this);
  Panel_Programu[i]- >Parent = ScrollBox1;
  Panel_Programu[i]- >Top = 10 + (i * 106);
  Panel_Programu[i]- >Left = 10;
  Panel_Programu[i]- >Width = 540;
  Panel_Programu[i]- >Height = 95;
  Panel_Programu[i]- >BevelOuter = bvNone;
  Panel_Programu[i]- >Color = clActiveCaption;
  Panel_Programu[i]- >Visible = true;

  Napis_Nazwa_Programu[i] = new TLabel(this);
  Napis_Nazwa_Programu[i]- >Parent = Panel_Programu[i];
  Napis_Nazwa_Programu[i]- >Top =0;
  Napis_Nazwa_Programu[i]- >Left = 0;
  Napis_Nazwa_Programu[i]- >Width = 540;
  Napis_Nazwa_Programu[i]- >Height = 25;
  Napis_Nazwa_Programu[i]->Visible = true;
  Napis_Nazwa_Programu[i]- >Font->Name = "Calibri";
  Napis_Nazwa_Programu[i]- >Font->Size = 16;
  Napis_Nazwa_Programu[i]- >Alignment = taCenter;
  Napis_Nazwa_Programu[i]- >Align = alTop;
  Napis_Nazwa_Programu[i]- >Caption = sAppName;
  Napis_Nazwa_Programu[i] - > Tag = i;
  Napis_Nazwa_Programu[i]- >OnClick = Nazwa_Programu;

  Przycisk_Zainstaluj_X86[i] = new TButton(this);
  Przycisk_Zainstaluj_X86[i]- >Parent = Panel_Programu[i];
  Przycisk_Zainstaluj_X86[i]- >Top= 27;
  Przycisk_Zainstaluj_X86[i]- >Left = 106;
  Przycisk_Zainstaluj_X86[i]- >Width = 60;
  Przycisk_Zainstaluj_X86[i]- >Height = 30;
  Przycisk_Zainstaluj_X86[i]- >Visible = true;
  Przycisk_Zainstaluj_X86[i]- >Caption = "Zainstaluj";
  Przycisk_Zainstaluj_X86[i]- > Tag = i;
  Przycisk_Zainstaluj_X86[i]- >OnClick = Zainstaluj_X86;

  Przycisk_Zainstaluj_X64[i] = new TButton(this);
  Przycisk_Zainstaluj_X64[i]- >Parent = Panel_Programu[i];
  Przycisk_Zainstaluj_X64[i]- >Top= 56;
  Przycisk_Zainstaluj_X64[i]- >Left = 106;
  Przycisk_Zainstaluj_X64[i]- >Width = 60;
  Przycisk_Zainstaluj_X64[i]- >Height = 30;
  Przycisk_Zainstaluj_X64[i]- >Visible = true;
  Przycisk_Zainstaluj_X64[i]- >Caption = "Zainstaluj";
  Przycisk_Zainstaluj_X64[i]- > Tag = i;
  Przycisk_Zainstaluj_X64[i]- >OnClick = Zainstaluj_X64;
}
//------------------------------------------------------------
// Usuwanie obiektów
void __fastcall TForm1::DeleteOldObjects(int count)
{
 for(int i = 0; i < count; i++)
    delete Panel_Programu[i];
}
//------------------------------------------------------------
// Szukanie folderów programów, Dodawanie ich do ListBox3
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
int i;
 static int count = 0;

 if (count != 0)
 {
  Form1->ListBox3->Items->Clear();
  DeleteOldObjects(count);
  count  = 0;
 }

 if(FindFirst(sAppDir + "Kategorie Programów\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\*.*", faDirectory, Search) == 0)
     {
      do{
         if(((Search.Attr & faDirectory) > 0) & (Search.Name != ".") & (Search.Name != ".."))
         {
           Form1->ListBox3->Items->Add(Search.Name);
           CreateNewObjects(count, ExtractFileName(Search.Name));
           count++;
         }
        }
        while(FindNext(Search) == 0);
        FindClose(Search);
     }


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


void __fastcall TForm1::Uruchom_Foldery(int Tag)
{
Katalog=sAppDir + "Kategorie Programów" + "\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\" + ListBox3->Items->Strings[Tag] + "\\";
ShellExecute(Form1->Handle, NULL , (Katalog).c_str(), "", "", SW_SHOWNORMAL);
}

void __fastcall TForm1::Uruchom(String Szukane, int Tag)
{
Katalog=sAppDir + "Kategorie Programów" + "\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\" + ListBox3->Items->Strings[Tag] + "\\";
 if(FindFirst(Katalog + Szukane, faAnyFile, Search) == 0)
     {
      do
      {
  ShellExecute(Form1->Handle, NULL , (Katalog+Search.Name).c_str(), "", "", SW_SHOWNORMAL);
        }
        while(FindNext(Search) == 0);
        FindClose(Search);
     }
     }
}


void __fastcall TForm1::Nazwa_Programu(TObject *Sender)
{
int Tag = dynamic_cast<TComponent *>(Sender) -> Tag;
Uruchom_Foldery(Tag);
}

//------------------------------------------------------------
// Uruchamianie programów X86
void __fastcall TForm1::Zainstaluj_X86(TObject *Sender)
{
int Tag = dynamic_cast<TComponent *>(Sender) -> Tag;
Szukane="[X86*.*";
Uruchom(Szukane, Tag);
}
//------------------------------------------------------------
// Uruchamianie programów X64
void __fastcall TForm1::Zainstaluj_X64(TObject *Sender)
{
int Tag = dynamic_cast<TComponent *>(Sender) -> Tag;
Szukane="[X64*.*";
Uruchom(Szukane, Tag);
}


Zapomniałem dodać, że w nazwie programu jest jeszcze określony rodzaj architektury (X86, X64). Umieszczam je przed nazwą programu w nawiasach kwadratowych np. [X86] Nazwa_Programu Wersja_Programu.exe Ale z tym nie ma problemu bo w zmiennej szukane dodaje ten element.

I jeszcze przykład działania:

Obrazek

Planuje jeszcze dodać taki element, że jeżeli nie będzie np. programu w architekturze X64 to przycisk będzie nieaktywny. Udało mi się na razie zrobić to pod przyciskiem, lecz nie w ListBox1, bo potrzebowałbym plików *.exe. Więc najlepiej byłoby wrzucić te pliki *.exe do kolejnego ListBoxa i wtedy dać tam ifa, lecz jak robiłem drugie wyszukiwanie w zdarzeniu klikniecia w listbox1 to wyszukiwał się tylko 1 program. Nie chciałbym tego robić przy kliknięciu w ListBox3, bo on ma być tylko do przechowywania tych nazw i nic więcej, będzie niewidoczny.
Avatar użytkownika
brando
Bladawiec
Bladawiec
 
Posty: 14
Dołączył(a): czwartek, 21 kwietnia 2011, 23:24
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows XP, 7
Kompilator: C++ Builder 6
Gadu Gadu: 1148942
    Windows 7Firefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » piątek, 29 kwietnia 2011, 16:33

Nie no! Nie wiem już jak do Ciebie przemawiać!!!

Przykład zawartości list dla ListBox1 i ListBox2!!!

Coś w tym rodzaju:

Zawartość ListBox1:
KOD text:     UKRYJ  
1025\
1028\
1031\
1033\
1037\
1041\
1042\
1045\
1054\
2052\
3076\
AGEIA\
appmgmt\
CatRoot\
CatRoot2\
Com\
config\
Data\
Defaults\
dhcp\
DirectX\
drivers\
DRVSTORE\
en-us\
export\
ias\


Zawartość ListBox2:
KOD text:     UKRYJ  
netdde.exe
netsetup.exe
netsh.exe
netstat.exe
nlsfunc.exe
notepad.exe
nslookup.exe
ntbackup.exe
ntkrnlpa.exe
ntoskrnl.exe
ntsd.exe
ntvdm.exe
nvappbar.exe
nvcolor.exe
nvcplui.exe
nvdspsch.exe
nvsvc32.exe
nvudisp.exe
NVUNINST.EXE
nw16.exe
nwiz.exe
nwscript.exe
odbcad32.exe
odbcconf.exe
openfiles.exe
osk.exe
osuninst.exe
packager.exe
pathping.exe
pentnt.exe
perfmon.exe
ping.exe
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
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez polymorphism » piątek, 29 kwietnia 2011, 16:38

A ja mam takie pytanie, nieco offtopowe: po co jest ListBox3, jeśli z prawej strony okna masz to samo, tzn. listę aplikacji?

--- dodane ---

Właśnie znalazłem odpowiedź na pytanie:
(...) ListBox3, bo on ma być tylko do przechowywania tych nazw i nic więcej, będzie niewidoczny.

ListBox3 jako kontener - głupota. W VCL-u do tego typu zastosowań masz np. TStringList, a w STL-u szablon vector tudzież list.
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
brando
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Problem z AutoRun

Nowy postprzez Cyfrowy Baron » piątek, 29 kwietnia 2011, 16:50

Koncepcja tego programu jest nieprzemyślana. W ListBox1 są kategorie programów - OK, jest to jednocześnie nazwa kategorii, czyli mamy już kawałek ścieżki:

KOD cpp:     UKRYJ  
String sAppFile = ExtractFilePath( ParamStr(0) ) + ListBox1->Items->Strings[ ListBox1->ItemIndex] + "\\";


Jedziemy dalej. W ListBox3 znajdują się nazwy programów. Są to nazwy główne, które są jednocześnie nazwą katalogu, czyli ścieżka:


KOD cpp:     UKRYJ  
String sAppFile = ExtractFilePath( ParamStr(0) ) + ListBox1->Items->Strings[ ListBox1->ItemIndex] + "\\" + ListBox3->Items->Strings[ ListBox1->ItemIndex] + "\\";


Teraz w tej lokalizacji masz dwa lub więcej plików EXE, czyli programów, ale nazwy tych pliki nigdzie nie są zapisane, więc je wyszukujesz. Tutaj jest problem, który łatwo rozwiązać. Podczas wyszukiwania folderów i podfolderów należy w tych katalogach razem z programami umieścić plik tekstowy zawierający spis wszystkich programów jakie się w tym katalogu znajdują. Niezależnie od katalogu, nazwa tego pliku zawsze musi być taka sam. Plik umieszcza się w każdym katalogu z programami. Dzięki temu wystarczy najpierw wczytać plik ze spisem programów, a potem odczytać zawartość tego pliku i umieścić ją na liście, a potem pobrać ten program z listy.

Takie programy już funkcjonują np. na płytach CDAction jest przeglądarka zawartości płyty, która działa na podobnej zasadzie.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
brando
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
    Windows XPFirefox

Poprzednia stronaNastępna strona

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 3 gości