ubuntu kernelversion number/de

From Free Pascal wiki
Revision as of 16:41, 11 April 2018 by Kai Burghardt (talk | contribs) (ordinal numbers in syntaxhighlight)
Jump to navigationJump to search

Deutsch (de)

Zurück zur Seite Code Beispiele.

Dieser Artikel beschäftigt sich mit der Linuxprogrammierung (Ubuntu).

Die Prozedur ermittelt die aktuelle Versionsnummer des Kernels.

uses
  SysUtils, ...;

  ...

function funLeseDatei: string;
var
  txtDatei: Textfile;
begin
  Assignfile(txtDatei, '/proc/version'); // weist txtDatei die Datei zu
  reset(txtDatei); // oeffnet die Datei zum Lesen
  readln(txtDatei, Result); // liest die erste Zeile
  Closefile(txtDatei); // schliesst die Datei
end;


function funKernelversionsNummer: string;
var
  intI: integer = 0;
  intZaehler: integer = 0;
  strProcVersion: string = '';

begin

  Result := '';

  strProcVersion := funLeseDatei();
  if strProcVersion = '' then
    exit;

  for intI := 1 to Length(strProcVersion) do
  begin

    if (strProcVersion[intI] = '-') then
    begin
      intZaehler := intZaehler + 1;
      if intZaehler > 1 then break;
    end;

    if (strProcVersion[intI] in ['0'..'9', '.', '-']) then
      Result := Result + strProcVersion[intI];

  end;

end;
  
...

Das ganze läßt sich strukturierter mit FPUname ermitteln:

 1program kerninfo(input, output, stderr);
 2
 3uses
 4	// baseUnix for fpUname
 5	baseunix,
 6	// sysutils for format
 7	sysutils,
 8	// gettext for internationalization
 9	gettext;
10
11resourcestring
12	unameFailure  = 'uname(2) failed';
13	releaseNumber = 'release number: %0:s';
14	versionNumber = 'version number: %0:s';
15
16var
17	kernelInfo: utsName;
18begin
19	translateResourceStrings('./' + applicationName() + '.%s.mo');
20	
21	if fpUname(kernelInfo) <> 0 then
22	begin
23		writeLn(stderr, unameFailure);
24		halt(1);
25	end;
26	
27	writeLn(format(releaseNumber, [kernelInfo.release]));
28	writeLn(format(versionNumber, [kernelInfo.version]));
29end.