AGB  ·  Datenschutz  ·  Impressum  







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

Werte unter Delphi XE2 zuweisen !?

Ein Thema von roga · begonnen am 8. Apr 2012 · letzter Beitrag vom 8. Apr 2012
Antwort Antwort
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#1

AW: Werte unter Delphi XE2 zuweisen !?

  Alt 8. Apr 2012, 10:40
@himitsu

Ich habe die gegenteilige Erfahrung gemacht, ein Kollege von mir setzt exzessiv With Statements ein, auch mehrfach verschachtelt, in der Art
Delphi-Quellcode:
   With MyAdodatset do
     begin
        For ....
          Fields[i].irendwas ....
          With aCanvas do ...
     end;
Wenn man hier etwas debuggen will muss man immer den wieder zusammengesetzten Ausdruck in die Überwachung nehmen, bei einem Mouseover läuft gar nichts, außer dass sich der Debugger bisweilen aufhängt und die ganze IDE mitnimmt
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 8. Apr 2012 um 10:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Werte unter Delphi XE2 zuweisen !?

  Alt 8. Apr 2012, 14:09
Wenn man unbedingt with benutzen möchte, dann sollte man sich entweder ausschließlich auf dieses Objekt beschränken oder eben alles direkt referenzieren.

Das genannte Beispiel sollte so reibungslos funktionieren:
Delphi-Quellcode:
// unter Delphi 2007 und XE2

  with ARect do
    begin
      Left := 4;
      Right := Self.Width - 4;
      Top := Self.Height - 20;
      Bottom := Self.Height;
    end;
Allerdings habe ich so den Verdacht, dass hier von einer Form der innere Bereich ohne den Rand ermittelt werden soll, und das geht natürlich erheblich einfacher (und vor allem funktioniert das bei jedem Theme und jeder Darstellungsart) mit Delphi-Referenz durchsuchenTForm.ClientRect
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#3

AW: Werte unter Delphi XE2 zuweisen !?

  Alt 8. Apr 2012, 15:31
Die Ursache war einfach die neue und auch sinnvolle Erweiterung des TRect um Width und Height, die gab es halt zum Zeitpunkt der Erstellung noch nicht. Mal sehen, was die weitere Umstellung auf XE2 noch an Überraschungen bringt, die meisten Sachen laufen aber ohne Probleme. Anders sieht es bei Fremdkomponenten aus wie z.B. die DLLLoader.pas (BASS), die ich in älteren Spielen für die mp3-Wiedergabe nutze. Hier schmiert das Programm direkt beim Start ab, bleibt aber noch im Task-Manager drin.

Delphi-Quellcode:
IF ASSIGNED(Stream) THEN BEGIN
  Stream.Seek(0, soFromBeginning);
  IF Stream.Size>0 THEN BEGIN
   IF ReadImageHeaders THEN BEGIN
    IF InitializeImage THEN BEGIN
     IF ReadSections THEN BEGIN
      IF ProcessRelocations THEN BEGIN
       IF ProcessImports THEN BEGIN
        IF ProtectSections THEN BEGIN
         IF InitializeLibrary THEN BEGIN // Exception
          IF ProcessExports THEN BEGIN
           RESULT:=TRUE;
          END;
         END;
        END;
  ...
Hier die entsprechende Function:
Delphi-Quellcode:
FUNCTION InitializeLibrary:BOOLEAN;
 BEGIN
  RESULT:=FALSE;
  @DLLProc:=ConvertPointer(ImageNTHeaders.OptionalHeader.AddressOfEntryPoint);
  IF DLLProc(CARDINAL(ImageBase),DLL_PROCESS_ATTACH,NIL) THEN BEGIN
   RESULT:=TRUE;
  END;
 END;
Aber das wäre nicht ganz so gravierend, da die Spiele nicht weiterentwickelt werden.
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Werte unter Delphi XE2 zuweisen !?

  Alt 8. Apr 2012, 16:14
Die Frage ist eher, warum dort jemand versucht die DLL manuell zu laden und nicht die vorhandenen APIs nutzt?
Ein Therapeut entspricht 1024 Gigapeut.
  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 22:49 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-2025 by Thomas Breitkreuz