Kilka pytań o Delphi 8

0

Zassałem z netu Delphi 8, odpaliłem i pierwsze co mi przyszło do głowy to pytanie „Co oni zrobili temu biednemu Delphi?”.

  1. Brak jest polskich liter, a to:
    Software\Borland\BDS\2.0\EditorOptions
    NoCtrlAltKeys # 1
    nic nie daje :-(

  2. Jak rozpoznać dyrektywą .NET? Dla Win16 i Win32 pisało się tak:

  {$IFDEF WINDOWS}
   Caption := 'Win16';
  {$ENDIF}
  {$IFDEF WIN32}
   Caption := 'Win32';
  {$ENDIF}

A jak dla .NET?

  1. Otwieram opcje projektu, patrzę... patrzę ponownie... tak, dobrze (nie)widziałem - brakuje 'Version Info'. W pliku DPR jest takie coś:
{$REGION 'Program/Assembly Information'}
[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]
[assembly: AssemblyVersion('1.0.*')]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile('')]
[assembly: AssemblyKeyName('')]

Czy to znaczy, ze trzeba samemu te informacje pisać? Co za numery Delphi wstawi zamiast * w AssemblyVersion('1.0.*')', np. 1.0.1572.36498? Z kosmosu je bierze, czy co?

  1. Po kompilacji projektu VCL, EXE ma 1.29 MB (!!!!!!!!!!!!). Kurde - to tylko forma. Czemu taki ogromniasty plik? Ten plik jest nieUPXowalny (nawet parametr force nic nie daje), a Restorator widzi tylko ikony, wersję i kursory (a gdzie formy i wszystkie inne rzeczy). Ponadto program nie działa na Win98 (oprócz XP tylko na takim go odpalałem) – brak jest pliku MSCOREE.DLL. Czy w takim razie, aby program kompilowany w Delhi 8 działał, w kompie musi być Frameworks? Program tworzy jakieś 2 dodatkowe wątki, ponadto uruchamia się bardzo wolno. O co tutaj w ogóle chodzi?

  2. Komponenty. Jak odinstalować pakiet, jak zainstalować kontrolki ActiveX? Od zawsze potrzebne opcje były w menu Components – teraz ich nie ma. Pytanie drugie: jak tworzyć komponenty dla .NET (w Components jest tylko opcja do ich instalacji). Pytanie kolejne: jak tworzyć aplety panelu sterowania i obiekty ActiveX (w repozytorium nie ma takich opcji)?

  3. Taki kod:

  Form1.Caption := 'Delphi 8';

w OnCreate formy wywala error „Object reference not set to an instance of an object”, ale w innym zdarzeniu działa dobrze. Czemu tak się dzieje?

0

Co do klawiszy ustaw KeyMapping na Visual Studio (tm) emulation.

Pozdrawiam...d[AvE]

0
  1. Jak rozpoznać dyrektywą .NET? Dla Win16 i Win32 pisało się tak:
  {$IFDEF WINDOWS}
   Caption := 'Win16';
  {$ENDIF}
  {$IFDEF WIN32}
   Caption := 'Win32';
  {$ENDIF}

A jak dla .NET?

{$IFDEF CLR}

  1. Otwieram opcje projektu, patrzę... patrzę ponownie... tak, dobrze (nie)widziałem - brakuje 'Version Info'. W pliku DPR jest takie coś:
    Czy to znaczy, ze trzeba samemu te informacje pisać? Co za numery Delphi wstawi zamiast * w AssemblyVersion('1.0.*')', np. 1.0.1572.36498? Z kosmosu je bierze, czy co?

To sa tzw. atrybuty podzespolu. Sa to informacje na temat praw autorskich, wersji itp. Mozesz je wpisac recznie, dzieki temu inne podzespoly w bardzo prosty sposob beda mogly odczytac informacje o twoim programie. W najprostszym rozumieniu, podzespol to zwykly plik .exe lub .dll dzialajacy pod kontrola .NET.

[qupte]4. Po kompilacji projektu VCL, EXE ma 1.29 MB (!!!!!!!!!!!!). Kurde - to tylko forma. Czemu taki ogromniasty plik? Ten plik jest nieUPXowalny (nawet parametr force nic nie daje), a Restorator widzi tylko ikony, wersję i kursory (a gdzie formy i wszystkie inne rzeczy). Ponadto program nie działa na Win98 (oprócz XP tylko na takim go odpalałem) – brak jest pliku MSCOREE.DLL. Czy w takim razie, aby program kompilowany w Delhi 8 działał, w kompie musi być Frameworks? Program tworzy jakieś 2 dodatkowe wątki, ponadto uruchamia się bardzo wolno. O co tutaj w ogóle chodzi? </quote>

Aby program mogl byc uruchomiony, na komputerze musi zostac zainstalowane srodowisko .NET Framework SDK. Takiego srodowiska nie znajdziesz na platforme Win98 (IMHO) - tylko na 2000, XP, 2003.

Ponad to budowa aplikacji jest inna niz w poprzednich wersjach Delphi. To juz nie jest zwykly plik wykonywalny PE, ale posiada nowy format - UPX kompresuje plik, ale dziala na dotychczasowym formacie PE Win32 plik .NET ma calkowicie inna budowe. Podobnie jak w Javie kompilacja odbywa sie w locie, poprzez kompilator JIT, tak wiec to co dotychczas jest w pliku wynikowym to kod posredni, ktory jest kompilowany w momencie uruchamiania (dlatego pierwsze uruchomienie moze troche potrwac). Pozniej skompilowany juz plik jest umieszczany w specjalnym cache'u, z ktorego jest ladowany program przy nastepnym uruchamianiu.

Dlaczego tak duzo zajmuje zwykla aplikacja? Coz... zamiast VCL.NET, skorzystaj z Windows Forms (projektowanie odbywa sie podobnie, a rozmiar aplikacji wykonywalnej nie przekracza kilku kilobajtow.

  1. Komponenty. Jak odinstalować pakiet, jak zainstalować kontrolki ActiveX? Od zawsze potrzebne opcje były w menu Components – teraz ich nie ma. Pytanie drugie: jak tworzyć komponenty dla .NET (w Components jest tylko opcja do ich instalacji). Pytanie kolejne: jak tworzyć aplety panelu sterowania i obiekty ActiveX (w repozytorium nie ma takich opcji)?

W .NET uzycie obiektow COM, ActiveX jest nieco utrudnione - nie mozna w prosty sposob korzystac z takiego obiektu, aczkolwiek jest taka mozliwosc. Jednak jest to temat na odrebny artykul (ktory byc moze niedlugo umieszcze).

  1. Taki kod:
  Form1.Caption := 'Delphi 8';

w OnCreate formy wywala error „Object reference not set to an instance of an object”, ale w innym zdarzeniu działa dobrze. Czemu tak się dzieje?

Umiesc ten kod w zdarzeniu OnShow. W zdarzeniu OnCreate nie moze byc takiego kodu.

0

ja mam jedno pytanie, czy w .net jest jakiś odpowiednik klasy TStrings/TStringList?

//ok juz wpadlem na to: StringCollection, jesli by było komuś potrzebne

1 użytkowników online, w tym zalogowanych: 0, gości: 1