AGB  ·  Datenschutz  ·  Impressum  







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

Move innerhalb von TBytes

Ein Thema von Benmik · begonnen am 15. Okt 2020 · letzter Beitrag vom 16. Okt 2020
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#11

AW: Move innerhalb von TBytes

  Alt 15. Okt 2020, 21:38
Wo wir dabei sind, was ist eigentlich der Unterschied zwischen Parse und ToInteger?
Da hat jemand bei C# abgeguckt und von da die Bezeichner übernommen.
https://docs.microsoft.com/de-de/dot...ng-to-a-number

Daher sind auch Einige der neuen Funktionen in den Record-Helper bissl delphi-untypisch/unhandlich.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Okt 2020 um 21:45 Uhr)
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#12

AW: Move innerhalb von TBytes

  Alt 15. Okt 2020, 21:57
Jetzt lese ich deinen Link durch und denke: "Ja, und warum haben sie dann nicht auch TryParse implementiert, das wäre doch mal vernünftig!" Vorsichtshalber suche ich mal und tatsächlich, das gibt es, und wo? In System.SysUtils.TIntegerHelper! Ja, klar, wenn ich einen String konvertieren möchte, dann suche ich doch bei Integer.

Hab's mal probiert:
Delphi-Quellcode:
var i:integer;
begin
  If i.TryParse('1',i)
    then ...
Welcher Logik folgt sowas?

Geändert von Benmik (15. Okt 2020 um 22:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#13

AW: Move innerhalb von TBytes

  Alt 15. Okt 2020, 21:59
Damit es nicht auffällt, dass auch Anderes fehlt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: Move innerhalb von TBytes

  Alt 15. Okt 2020, 22:40
Ja, klar, wenn ich einen String konvertieren möchte, dann suche ich doch bei Integer.

Hab's mal probiert:
Delphi-Quellcode:
var i:integer;
begin
  If i.TryParse('1',i)
    then ...
Welcher Logik folgt sowas?
Naja, das kann man schon so machen, aber gemeint ist es anders. Da TryParse eine Klassenfunktion ist, wäre der folgende Ansatz etwas geradliniger:

Delphi-Quellcode:
var i:integer;
begin
  If Integer.TryParse('1',i)
    then ...
Deutlicher wird es ohne das Try:
Delphi-Quellcode:
var i:integer;
begin
  i := Integer.Parse('1')
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benmik

Registriert seit: 11. Apr 2009
557 Beiträge
 
Delphi 12 Athens
 
#15

AW: Move innerhalb von TBytes

  Alt 16. Okt 2020, 00:10
Ja, verstehe. Trotzdem empfinde ich das als irgendwie unpassend. Allenfalls bei deinem zweiten Beispiel stellt sich so etwas wie eine Logik ein. Naja, egal. Man ist versucht zu sagen: CodeInsight geht nicht, aber für sowas hamse Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#16

AW: Move innerhalb von TBytes

  Alt 16. Okt 2020, 00:27
Diese Operatoren kannst auch selbst erweitern, wenn dir was fehlt oder etwas besseres einfällt. (es wäre nur einfacher, wenn die "vererbung" nicht so unglücklich gelöst wäre)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.095 Beiträge
 
Delphi 12 Athens
 
#17

AW: Move innerhalb von TBytes

  Alt 16. Okt 2020, 08:37
Ich nehme immer noch gerne TryStrToInt oder StrToIntDef.
Weil letzendlich die Parse und TryParse Funktionen diese auch benutzen, welche aber nicht inline sind.

Am Ende der Kette wird bei Ganzzahlen wohl immer Val() benutzt, auch das könnte mal Sinn machen, benutze ich aber auch nicht direkt.

Delphi-Quellcode:
function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
  E: Integer;
begin
  Val(S, Value, E);
  Result := E = 0;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#18

AW: Move innerhalb von TBytes

  Alt 16. Okt 2020, 10:23
Jo, Delphi-Referenz durchsuchenVal zu nutzen bringt nur was, wenn man auch das Result (E) auswertet. (zu oft schon gesehn, dass das nicht gemacht wird)

Wobei Val anstelle von TryStrToInt, hat nur dann einen Vorteil hat, wenn man wirklich mal die Fehlerposition wissen möchte ... ansonsten schleppt man nur sinnlos die ungenutzte Variable mit sich rum.
Delphi-Quellcode:
S := Edit1.Text;
Val(S, i, E);
if i > 0 then begin
  Edit1.SetFocus;
  Edit1.SelStart := E;
  Edit1.SelLength := 9999;
  raise Exception.Create('ungültige Zahl');
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 12:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz