AGB  ·  Datenschutz  ·  Impressum  







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

AnsiString in Android App

Ein Thema von Alex_ITA01 · begonnen am 16. Sep 2014 · letzter Beitrag vom 23. Apr 2015
 
Benutzerbild von himitsu
himitsu

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

AW: AnsiString in Android App

  Alt 17. Sep 2014, 22:51
{$OLDTYPELAYOUT ON} hat was mit der Speicherausrichtung der Felder in Records zu tun. Und dann noch das mit dem Sign in Integertypen.
http://docwiki.embarcadero.com/RADSt...e_Datenformate -> siehe Abschnitt "Implizites Packen von Feldern mit einer gemeinsamen Typspezifikation"

{$ZEROBASEDSTRINGS ON}
Da ist das erste Zeichen im String bei S[0] und nicht bei S[1] , welches (das mit der 0) nun der Standard in Android und iOS ist.
Du mußt also aufpassen, wenn du den selben Delphi-Code für Windows verwendest, oder fürs Mobile, da dort die Indize im String nun alle verschoben sind.

{$LEGACYIFEND}
Es war doch mal so, daß {$IFDEF XYZ} {$ENDIF} mit ENDIF endete und {$IF XYZ} {$IFEND} mit IFEND,
aber weil die Programmierer zu doof waren (ja, an vielen Stellen im Delphi-Quellcode ist das auch "falsch"), kann man nun auch IFEND und ENDIF wild verauschen.

Das war mal absichtlich so implementiert, damit man via IFDEF die IF vor den alten Compilern verstecken konnte, welche die ConditionalExpressions nicht kannten, da der Compiler dann einfach das IFDEF bis zum ENDIF bezieht, weil er das IFEND nicht kenn und somit überieht, ohne daß dabei was kaputt geht.

Delphi-Quellcode:
{$IFDEF ConditionalExpressions}
  {$IF CompilerVersion = 21}
    mach was
  {$IFEND}
{$ENDIF}
Wenn der Compiler das $IF nicht kennt, dannwürde er schon beim ersten IFEND stoppen, wenn man Dieses ebenfalls ENDIF genannt hätte. Und beim zweiten ENDIF würde es dann knallen, weil er kein IFDEF dafür mehr Finden würde.
Delphi-Quellcode:
{$IFDEF ConditionalExpressions}
  {$IF CompilerVersion = 21}
    mach was
{$ENDIF}
{$ENDIF}  // peng
In neueren Delphi hat man aber erlaubt, daß $IF ebenfalls mit $ENDIF enden kann.
Der Compiler knallt nun nicht, auch wenn man es syntaktisch falsch schreiben tut.

Aber das ErrorInsight weiß immernoch, daß es eigentlich falsch ist und unterstreicht dieses eigentliche falsche $ENDIF, auch wenn es sich problemlos compilieren lässt.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Sep 2014 um 23:14 Uhr)
  Mit Zitat antworten Zitat
 


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 08:44 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