AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein InterlockedIncrement in welcher Unit?
Thema durchsuchen
Ansicht
Themen-Optionen

InterlockedIncrement in welcher Unit?

Ein Thema von delphifan2004 · begonnen am 30. Okt 2024 · letzter Beitrag vom 30. Okt 2024
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 12:56
Außerdem:
Delphi-Quellcode:
interface
uses Windows, System.SyncObjs;
aber dann:
Delphi-Quellcode:
  { Safely increment the counter. }
  winapi.windows.InterlockedIncrement(GetMemCalls); //Bereits hier meckert der Compiler
Entweder WinApi an beiden Stellen (empfohlen) oder an keiner.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
442 Beiträge
 
Delphi 12 Athens
 
#12

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 13:05
Richtig, bei 10.3 war das ja noch in der System.SyncObjs. Wir sollten eine Delphi-PRAXis-History für Fragen zu den älteren Delphi-Versionen einführen. Zumindest gefühlt werden das ja immer mehr.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#13

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 13:11
Verwende stattdessen das "neue" platformunabhänige Delphi-Referenz durchsuchenAtomicIncrement (aus der System-Unit)
Dem kann ich nur zustimmen - die Atomic intrinsics gibt es ab XE3.

Der Text in der Hilfe ist leider immer noch etwas irreführend, da dort steht dass sie für "mobile Delphi-Compiler" seien, was kompetter Unfug ist. Diese Routinen stehen für alle Platformen zur Verfügung und generieren den entsprechenden Binärcode.

Edit: fwiw, ich hab das mal reported
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (30. Okt 2024 um 13:19 Uhr)
  Mit Zitat antworten Zitat
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
274 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 13:22
Genau da meckert aber mein Compiler Delphi 11.3 Community Edition und genau das kann ich mir nicht erklären. Ich weiß neichet mehr was ich noch tun soll. Warum gibt es solche böden Fehler nur bei Mir?

Besser ich baue mir eine eigene Rotine dafür aber wie fange ich das an? Da zugehörige Projet ist im Delphi Pfad wie er installiert ist under dem Ordner Prokekte.Delphi legt ja dafür unter

c:\Users\Konta\Documents\Embarcadero\Studio\Projek te\

meinen Pfad an und dort gibt es meinjen Unterordner für das Projekt. Für jedes Projekt ein Unterordner in /Projekte

Warum findet der Compiler dann eine Unit nicht? Bin verzweifelt!
  Mit Zitat antworten Zitat
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
274 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 13:34
Danke @Stevie! AtomicIncrement ist die Lösung!

Echt frustrierend wenn sich die Lokationen der Bezeichner auch noch von Version zu Verion ändern, da ist es kein Wunder, wenn/dass man irgendwann frustriert aufgibt, was als Hobby Programmierer ja geht. Wie aber soll der professionelle Programmierer einem Kunden erklären dass das Programm wegen solcher vermeidbaren Probleme so teuer ist???. Und es ist sinnlos vergeudete Arbeitszeit in der professionellen Programmierung, die der programmierende zu Recht anständig bezahlt haben will.

Geändert von delphifan2004 (30. Okt 2024 um 13:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 13:59
Das hieße ja dass ich die Klasse TInterlocked nicht erst instanziieren muss?
Natürlich nicht, denn
Delphi-Quellcode:
  TInterlocked = class sealed
  public
    class function Increment(var Target: Integer): Integer; overload; static; inline;
    class function Increment(var Target: Int64): Int64; overload; static; inline;
(man beachte das CLASS)

Delphi-Quellcode:
var MyVar: Integer;

AtomicIncrement(MyVar); // die System.pas ist immer eingebunden
InterlockedIncrement(MyVar); // Winapi.Windows.pas
TInterlocked.Increment(MyVar); // System.SyncObjs.pas
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#17

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 15:14
Danke @Stevie! AtomicIncrement ist die Lösung!
Ich hab nur zitiert, was himi schon geschrieben hatte...

wenn sich die Lokationen der Bezeichner auch noch von Version zu Verion ändern
Übertreiben wir hier ein wenig? Die Atomic Intrinsics gibt es seit XE3, welches die erste Delphiversion war, die über Windows hinaus ging.

der professionelle Programmierer
Aus eigener Erfahrung kann ich dir berichten, dass man sich - so wie in allen Berufen, wo sich regelmäßig Dinge ändern und nicht Jahrzehnte gleich bleiben - mit seinen Werkzeugen auseinander setzen muss.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#18

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 15:29
Übertreiben wir hier ein wenig? Die Atomic Intrinsics gibt es seit XE3, welches die erste Delphiversion war, die über Windows hinaus ging.
<KlugScheisserei>

Eigentlich war schon XE2 ziemlich über Windows hinweg
aber ja, XE3 war sicher stabiler und es gab noch eine Menge Änderungen ...

https://de.wikipedia.org/wiki/Embarc...dename_Pulsar)

</KlugScheisserei>
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#19

AW: InterlockedIncrement in welcher Unit?

  Alt 30. Okt 2024, 17:17
Stimmt, außer OSX32 lief das allerdings über FPC und für OSX32 funktionierte noch der x86 asm Code, deshalb sah man zu diesem Zeitpunkt wohl noch nicht die Notwendigkeit für platformübergreifende Intrinsics.
Muss ich verdrängt haben
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  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 02:24 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