AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String('8.0.0').toInteger

Ein Thema von amigage · begonnen am 28. Jan 2022 · letzter Beitrag vom 29. Jan 2022
Antwort Antwort
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#1

AW: String('8.0.0').toInteger

  Alt 28. Jan 2022, 15:08
Ich hätte das eher mit CharInSet oder mit StrVar.Splitt(['.']) gelöst und am Ende dann StrtoInDef verwendet.
CharInSet wäre eine Alternative. Split() ist nicht flexibel genug, da ich ja genau den Separator kennen müsste..

wenn nur major interessant ist, warum nicht nur auf string array erstes feld prüfen?
In meinem Fall kann Major auch zweistellig sein, oder später auch dreistellig. Zudem sollte die Funktion flexibel sein. Also aus einem String, die ersten Integerwerte lesen.

Warum nicht den vorgesehenen Weg gehen:

Delphi-Quellcode:
uses
  System.Sysutils;
TOSVersion.Check(8);
Normalerweise ja, aber in meinem Fall möchte ich nicht wissen, ob es genau diese Version des System ist, sondern ob es kleiner 9 ist.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#2

AW: String('8.0.0').toInteger

  Alt 28. Jan 2022, 15:22
Normalerweise ja, aber in meinem Fall möchte ich nicht wissen, ob es genau diese Version des System ist, sondern ob es kleiner 9 ist.
Dann wäre if not TOSVersion.Check(9) then hier besser geeignet.

https://docwiki.embarcadero.com/Libr...SVersion.Check

Zitat:
Returns whether the version of the current operating system is above or equal to a specific value.

Use Check to determine whether the version of the current operating system is above or equal to a specific required version.
Es gibt da auch overloads für zwei oder drei Parameter.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#3

AW: String('8.0.0').toInteger

  Alt 28. Jan 2022, 16:34
Dann wäre if not TOSVersion.Check(9) then hier besser geeignet.
Stimmt, das hilft in meinem Fall. Irgendwie dachte ich nur, ich könnte testen, ob es genau diese Version ist. Habe nicht verstanden, dass man es als "ist die Version mindestens VALUE" interpretieren muss
  Mit Zitat antworten Zitat
wasbo

Registriert seit: 24. Jan 2022
Ort: Bochum
3 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: String('8.0.0').toInteger

  Alt 28. Jan 2022, 21:04
Dann wäre if not TOSVersion.Check(9) then hier besser geeignet.
Stimmt, das hilft in meinem Fall. Irgendwie dachte ich nur, ich könnte testen, ob es genau diese Version ist. Habe nicht verstanden, dass man es als "ist die Version mindestens VALUE" interpretieren muss
Kannst Du doch, schau dir TOSVersion mal an, das ist ein Record mit detaillierten Infos. Besser geht's kaum. "Check" ist doch nur eine Funktion.
Walter Schwägerl
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
258 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: String('8.0.0').toInteger

  Alt 29. Jan 2022, 09:04
Ich verwende für fehlertolerante String to Integer so eine Funktion

Code:
function QDStrToInt(const str : String) : Integer;
var i : Integer;
begin
   Result := 0;
   for i := 1 to Length(str) do
   if (str[i]>='0') and (str[i]<='9') then
        Result := Result * 10 + Integer(str[i]) - Integer('0')
   else break;
end;
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#6

AW: String('8.0.0').toInteger

  Alt 28. Jan 2022, 15:45
Zitat von amigage:
In meinem Fall kann Major auch zweistellig sein, oder später auch dreistellig. Zudem sollte die Funktion flexibel sein. Also aus einem String, die ersten Integerwerte lesen.
Hat also vermutlich nicht direkt was mit den Werten aus TOSVersion zu tun?

In meinem ollen Delphi 7 (oder auch TurboPascal aus den Anfängen ) ginge das z. B. so:
Delphi-Quellcode:
function GetFirstInteger(s : String) : Integer;
var
  i : Integer;
  Code : Integer;
begin
  Val(s, i, Code);
  if Code <> 0 then
  begin
    s := Copy(s,1,Code - 1);
    Val(s,i,Code);
  end;
  Result := i;
end;

...

begin
  if GetFirstInteger('8.1.1') < 9 then
  begin
    ShowMessage('Kleiner');
  end else
    ShowMessage('GrößerGleich');
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz