[Delphi] jak ziskat promennou z DOSu?

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Sajmon 8. 6. 2005 18:09

Ahoj, rad bych precetl promennou z DOSu. Je to mozne? Jak?


Rad bych jeste zjistil typ a takt CPU, a typ a velikost RAM tak, aby to slo na vsech verzich Windows. Poradite mi nekdo prosim? Google mi moc nepomohl.
Sajmon
Junior

Odeslat příspěvekod Wikan 8. 6. 2005 18:16

Ano je. Jak? No to zalezi na tom jakou promennou myslis. Jinak je to debilne polozena otazka.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod Sajmon 8. 6. 2005 18:48

Já myslím, že otázka je celkem jasná. Už jsem to ale našel a narazil jsem na další problém - jak zjistit, kam je namapovaný síťový disk?
Sajmon
Junior

Odeslat příspěvekod kýbl 8. 6. 2005 21:05

Proměnná DOSu kravina samozřejmě je, tazatel zřejmě myslí nějakou proměnnou prostředí, která ovšem nemá s DOSem pranic společného - jsou snad na všech systémech.[/b]
Rád si nechám poradit, když vím míň ;-)
kýbl
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod 2ge 9. 6. 2005 07:58

ako pisali ostatni, otazka bola nezrozumitelna a ta tvoja tiez. Ak robis podobne veci, odporucam ti to nerobit pod DOSom, ale pod niecim vykonnejsim, pretoze vzdy budes potrebovat nejake externe utility (kym ich najdes...), ja som z DOSu presiel na 4NT a neskor na Perl. Skus to aj ty a budes spokojny.
SubDownloader - stahuj a nahravaj titulky k filmom pomocou opensource programu z OpenSubtitles.org
2ge
Junior
Uživatelský avatar

Odeslat příspěvekod Vebloud 9. 6. 2005 08:01

Ty jsi rozchodil Delphi na dosu? Já myslel, že je na vytváření Win32 aplikací. Tak nic no.
Žít a nechat žít, ty máš svůj názor, já mám svůj názor, já ti nebudu nutit svůj, nemusím souhlasit s tvým, ale udělám vše, abys ho mohl svobodně vyjádřit.
Vebloud
Ex-moderátor
Uživatelský avatar

Odeslat příspěvekod Takeru 9. 6. 2005 08:20

Sajmon píše:Ahoj, rad bych precetl promennou z DOSu. Je to mozne? Jak?

Kód: Vybrat vše
function GetEnviron(S: string): string;
var
  Env: PChar;
begin
  GetMem(Env, 500);
  StrCopy(Env, '');
  try
    GetEnvironmentVariable(PChar(S), Env, 500);
    result := StrPas(Env);
  finally
    FreeMem(Env);
  end;
end;

použití:
Kód: Vybrat vše
result:=GetEnviron('TEMP');

nebo jestli to chceš jen na získání temp adresáře, tak to jde ještě takhle
Kód: Vybrat vše
function TempDir: string;
var
  Required: Cardinal;
begin
  Result := '';
  Required := GetTempPath(0, nil);
  if Required <> 0 then
  begin
    SetLength(Result, Required);
    GetTempPath(Required, PChar(Result));
    ResetLength(Result);
  end;
end;

Na zjištění taktu CPU mám tohle:
Kód: Vybrat vše
function GetCPUSpeed: double;
const
  DelayTime = 500; // measure time in ms
var
  TimerHi, TimerLo: DWORD;
  PriorityClass, Priority: integer;
begin
  PriorityClass := GetPriorityClass(GetCurrentProcess);
  Priority := GetThreadPriority(GetCurrentThread);

  SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
  SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

  Sleep(10);
  asm
    dw 310Fh // rdtsc
    mov TimerLo, eax
    mov TimerHi, edx
  end;
  Sleep(DelayTime);
  asm
    dw 310Fh // rdtsc
    sub eax, TimerLo
    sbb edx, TimerHi
    mov TimerLo, eax
    mov TimerHi, edx
  end;

  SetThreadPriority(GetCurrentThread, Priority);
  SetPriorityClass(GetCurrentProcess, PriorityClass);

  Result := TimerLo / (1000.0 * DelayTime);
end;

Ale nevim jestli to bude fungovat (to na takt cpu), přišlo mi to kdysi z jedný mailový konféry a ještě jsem to nezkoušel :wink:
Get it, or get hit!
Takeru
Junior
Uživatelský avatar

Odeslat příspěvekod rezna 9. 6. 2005 08:52

v env-vars nejsou moc dobre udaje - spis bych si to vytahl pomoci WinAPI.
rezna
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků