Temat: JCL i JVCL czyli zostań JEDI

Problem: Nie udane dodanie biblioteki komponentów JEDI do D7 STD.


Obrazek


Ponieważ instalacja całości nawet przy podaniu powyższemu czarodziejowi ścieżki do JCL nie przyniosła rezultatu,
wszedłem do D7PE IDE i odnalazłem paczkę JCL dla D7, i po kolei zainstalowałem kolejne komponenty.

Dobrze jest zmienić ścieżkę do przechowywania skompilowanych binariów komponetów z .../Delphi7/Project/BPL na
.../Delphi7/Bin

dziwne problemy

odczytanie readme

Teraz można było ponowić procedurę dla JVCL, w katalogu /packages
wybrałem pierwszy z brzegu w /D7per/JvGlobusD7D.dpk

Zaczęło krzyczeć, że nie ma JvCore i się zaczęło poszukiwanie .dpk.

Jest ich tam w różnych katalogach od metra. Zacząłem szukać czegokolwiek co da się skompilować. Znalazłem coś co po skompilowaniu dało mi

JVCLInstall.exe w jvcl/bin.

Po odpaleniu tego, już poprawnie znalazło do które IDE chce doinstalować JEDI. Co nie znaczy, że już się skończyło.

Aktualny problem, po wciągnieciu do IDE wszystkich projektów - plik grupy pakietów i wybraniu z menu 'Build all projects' pojawia się problem:

z kompilacją: JvComputerInfoEx.pas

function TJvCPUInfo.GetSSE: TJvSSEVersion;
begin
case GetCPUInfo.SSE of
1 : Result := vSSE1;
2 : Result := vSSE2;
3 : Result := vSSE3;
else Result := vNoSSE;
end;
end;

Expected Ordinal type, jasne case chce wartości numerycznej do dokonania wyboru.

sprawdzam więc typ

TJvSSEVersion = (vNoSSE, vSSE1, vSSE2, vSSE3);

i widzę zadeklarowaną klasę poniżej

TJvCPUInfo = class(TJvReadOnlyInfo)

private
function GetCPUInfo: TCPUInfo;
...
function GetSSE: TJvSSEVersion;
procedure SetSSE(const Value: TJvSSEVersion);

published
...
property SSE: TJvSSEVersion read GetSSE write SetSSE stored False;

i się zastanawiam, skąd tam się wzięło case
i czemu ma sprawdzać po numerkach coś co przyjmuje wartości TJvSSEVersion

i dlaczego własność obiektu SSE przechowuje False kiedy powinna np. vNoSSE

nie powinno być przypadkiem tak:

function TJvCPUInfo.GetSSE: TJvSSEVersion;
begin
case Ord(GetCPUInfo.SSE) of
1 : Result := vSSE1;
2 : Result := vSSE2;
3 : Result := vSSE3;
else Result := vNoSSE;
end;
end;

Ale zobaczmy co to jest to GetCPUInfo? To już jest JclSysInfo.pas

procedure GetCpuInfo(var CpuInfo: TCpuInfo);
begin
CpuInfo := CPUID;

...
end;

function CPUID: TCpuInfo;
...

CPUInfo.SSE := [];
if (CPUInfo.Features and SSE_FLAG) <> 0 then
Include(CPUInfo.SSE, sse);
if (CPUInfo.Features and SSE2_FLAG) <> 0 then
Include(CPUInfo.SSE, sse2);
if (CPUInfo.IntelSpecific.ExFeatures and EINTEL_SSE3) <> 0 then
Include(CPUInfo.SSE, sse3);
if (CPUInfo.IntelSpecific.ExFeatures and EINTEL_SSSE3) <> 0 then
Include(CPUInfo.SSE, ssse3);
if (CPUInfo.IntelSpecific.ExFeatures and EINTEL_SSE4_1) <> 0 then
Include(CPUInfo.SSE, sse4A);
if (CPUInfo.IntelSpecific.ExFeatures and EINTEL_SSE4_2) <> 0 then
Include(CPUInfo.SSE, sse4B);
...

tu sobie wkłada jak rozumiem, w [] te SSE...X

False = 0, więc przy jakieś skróconej logice w warunkach kompilacji może być, że kod jest dobry, tylko mnie się coś wydaje.

Czemu się nie chce skompilować? Też chce zostać JEDI ;-)Paweł P. edytował(a) ten post dnia 25.10.08 o godzinie 00:16

konto usunięte

Temat: JCL i JVCL czyli zostań JEDI

To musi być wina jakiejś ostatniej zmiany, ja bez problemu uruchamiałem D7 i Jedi.

Spróbuj poszukać jakiejś starszej wersji.
Piotr M.

Piotr M. programista

Temat: JCL i JVCL czyli zostań JEDI

Paweł P.:
property SSE: TJvSSEVersion read GetSSE write SetSSE stored False;
i dlaczego własność obiektu SSE przechowuje False kiedy powinna np. vNoSSE

Stored -> RTFM

nie powinno być przypadkiem tak:

function TJvCPUInfo.GetSSE: TJvSSEVersion;
begin
case Ord(GetCPUInfo.SSE) of
1 : Result := vSSE1;
2 : Result := vSSE2;
3 : Result := vSSE3;
else Result := vNoSSE;
end;
end;

Ale zobaczmy co to jest to GetCPUInfo? To już jest JclSysInfo.pas

procedure GetCpuInfo(var CpuInfo: TCpuInfo);
begin
CpuInfo := CPUID;

...
end;

Błąd. Tu masz procedurę, która nic nie zwraca, więc jak Ty ją chcesz do case'a wsadzić?Piotr F. edytował(a) ten post dnia 25.10.08 o godzinie 17:07

Temat: JCL i JVCL czyli zostań JEDI

Błąd. Tu masz procedurę, która nic nie zwraca, więc jak Ty ją chcesz do case'a wsadzić?

poprosze bardziej po polsku,

funkcja z Jedi_costam.pas
ustawia własność .SSE obiektu TJvCPUInfo za pomoca

porównania tego co zwraca

procedura GetCpuInfo /z JCL_costam.pas/
ustawiając własności obiektu CpuInfo
za pomocą szeregu podfunkcji, głównie asemblerowych

funkcja zwraca, procedura co najwyżej ustawia
rzecz w tym czemu jest

case nazwa_procedury of

i czemu "porównuje" z cyferkami jakby nie mogło zrobić
przepisania zawartości jednej własności obiektu do drugiej?

/stosuje analogie rozumowania - pola rekordów/

Sprawdze czy w 6 STD też jest to samo.
---

przy okazji :-) myśl techniczna z Dalekiego Wschodu, zainstalowała się bez problemów w obu IDE


Obrazek



Obrazek



Obrazek
Piotr M.

Piotr M. programista

Temat: JCL i JVCL czyli zostań JEDI

Umknęła mi "nakładka" w TJvCPUInfo na JclSysInfo.GetCPUInfo(), która diametralnie zmienia postać rzeczy.

W każdym bądź razie, ściągnąłem JVCL334CompleteJCL1102-Build3072.zip
i w żadnym pas'ie nie ma tego TJvSSEVersion. Może już poprawili tego bubla? Nawet z wprowadzonym przez Ciebie Ord'em nie wiem czy to by miało sens, bo w TSSESupport element z indeksem 1 to sse2, dla którego miało zwracać vSSE1?

Temat: JCL i JVCL czyli zostań JEDI

Może już poprawili

Dziękuje :-)

// $Id: JvComputerInfoEx.pas 11556 2007-11-03 16:17:22Z outchy $

unit JvComputerInfoEx;

function TJvCPUInfo.GetSSE: TSSESupports;
begin
Result := GetCPUInfo.SSE;
end;

tworek pochodzi z:

// $Id: JvComputerInfoEx.pas,v 1.44 2005/10/28 08:37:22 marquardt Exp $

unit JvComputerInfoEx;

--
I poprawione tak jak myślałem, że powinno być.

Proponuje zostawić temat otwarty.

Mam jeszcze problemy z Turbo-Power komponentami w 7 STD,
a w 6 STD ich nie mam.

I jeszcze nie rozumiem czemu SynEdit w D3 nie chce się skompilować :-) Przyjdę, ze źródłami.

Temat: JCL i JVCL czyli zostań JEDI

dla ciekawych co zawiera CNPack components oprócz experta /CNWizards/ do IDE


Obrazek


---
tymczasem kolejny problem i pytanie:

pytanie:

projekt.inc

//{$DEFINE PERSONAL_EDITION} <-- odkomentowalem to, a ponizej dałem //
{$DEFINE ENTERPRISE_EDITION}

{$IFNDEF PERSONAL_EDITION}
{$DEFINE SUPPORT_DB}
{$DEFINE SUPPORT_ADO}
{$ENDIF}

project_dsgn.dpk, nie działa // znaczy głupio pyta, gdzie jest np. adortl?

requires
vcl,
vclx,
{$IFNDEF PERSONAL_EDITION}
vcldb,
dclado,
adortl,
{$ENDIF}
designide,
PackRuntime;

po poprawce na:

requires
vcl,
vclx,
{$IF ENTERPRISE_EDITION}
vcldb,
dclado,
adortl,
{$IFEND}
designide,
PackRuntime;

działa. Poprawiam po bardziej kumatych niż ja, kazali zajrzeć do .inc to zajrzałem :-)

--

o oto problem


Obrazek

Obrazek


runtime, dsgtime i 3 inne dpk. Podstawowe weszły, 3 dodatkowe nie.Paweł P. edytował(a) ten post dnia 02.11.08 o godzinie 13:32



Wyślij zaproszenie do