Difference between revisions of "ubuntu kernelversion number/de"

From Free Pascal wiki
Jump to navigationJump to search
(add hint about baseUnix.fpUname())
Line 1: Line 1:
 
{{ubuntu kernelversion number}}
 
{{ubuntu kernelversion number}}
<br>
+
 
Zurück zur Seite [[code examples/de|Code Beispiele]].<br>
+
Zurück zur Seite [[code examples/de|Code Beispiele]].
<br>
+
 
Dieser Artikel beschäftigt sich mit der Linuxprogrammierung (Ubuntu).<br>
+
Dieser Artikel beschäftigt sich mit der Linuxprogrammierung (Ubuntu).
Die Prozedur ermittelt die aktuelle Versionsnummer des Kernels.<br>
+
 
<br>
+
Die Prozedur ermittelt die aktuelle Versionsnummer des Kernels.
 
<syntaxhighlight>
 
<syntaxhighlight>
 
uses
 
uses
Line 16: Line 16:
 
   txtDatei: Textfile;
 
   txtDatei: Textfile;
 
begin
 
begin
   Assignfile(txtDatei, '/proc/version'); //Weist txtDatei die Datei zu
+
   Assignfile(txtDatei, '/proc/version'); // weist txtDatei die Datei zu
   reset(txtDatei); //Öffnet die Datei zum Lesen
+
   reset(txtDatei); // oeffnet die Datei zum Lesen
   readln(txtDatei, Result); //liest die erste Zeile
+
   readln(txtDatei, Result); // liest die erste Zeile
   Closefile(txtDatei); //Schließt die Datei
+
   Closefile(txtDatei); // schliesst die Datei
 
end;
 
end;
  
Line 33: Line 33:
 
   Result := '';
 
   Result := '';
  
   strProcVersion := funLeseDatei;
+
   strProcVersion := funLeseDatei();
 
   if strProcVersion = '' then
 
   if strProcVersion = '' then
 
     exit;
 
     exit;
Line 53: Line 53:
 
end;
 
end;
 
    
 
    
  ...
+
...
 
 
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 06:14, 29 May 2013 (UTC)
 
  
 +
Das ganze läßt sich strukturierter mit {{Doc|package=RTL|unit=baseunix=identifier=fpuname|text=<code>FPUname</code>}} ermitteln:
 +
<syntaxhighlight>
 +
program kerninfo(input, output, stderr);
 +
 +
uses
 +
// baseUnix for fpUname
 +
baseunix,
 +
// sysutils for format
 +
sysutils,
 +
// gettext for internationalization
 +
gettext;
 +
 +
resourcestring
 +
unameFailure  = 'uname(2) failed';
 +
releaseNumber = 'release number: %0:s';
 +
versionNumber = 'version number: %0:s';
 +
 +
var
 +
kernelInfo: utsName;
 +
begin
 +
translateResourceStrings('./' + applicationName() + '.%s.mo');
 +
 +
if fpUname(kernelInfo) <> 0 then
 +
begin
 +
writeLn(stderr, unameFailure);
 +
halt(1);
 +
end;
 +
 +
writeLn(format(releaseNumber, [kernelInfo.release]));
 +
writeLn(format(versionNumber, [kernelInfo.version]));
 +
end.
 +
</syntaxhighlight>
  
 
{{AutoCategory}}
 
{{AutoCategory}}
 
[[Category:Code Snippets/de]]
 
[[Category:Code Snippets/de]]

Revision as of 01:35, 30 January 2018

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:

program kerninfo(input, output, stderr);

uses
	// baseUnix for fpUname
	baseunix,
	// sysutils for format
	sysutils,
	// gettext for internationalization
	gettext;

resourcestring
	unameFailure  = 'uname(2) failed';
	releaseNumber = 'release number: %0:s';
	versionNumber = 'version number: %0:s';

var
	kernelInfo: utsName;
begin
	translateResourceStrings('./' + applicationName() + '.%s.mo');
	
	if fpUname(kernelInfo) <> 0 then
	begin
		writeLn(stderr, unameFailure);
		halt(1);
	end;
	
	writeLn(format(releaseNumber, [kernelInfo.release]));
	writeLn(format(versionNumber, [kernelInfo.version]));
end.