Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Strings in Win32 und Android (https://www.delphipraxis.net/178933-strings-win32-und-android.html)

SoftwPC 4. Feb 2014 15:30

Strings in Win32 und Android
 
Hallo zusammen,

der String (einer Formel) '5x^2' enthält von
- Position 1 bis 4 die Zeichen #53#120#94#50 in Win32 und in Android #120#94#50#0
- Position 0 bis 4 die Zeichen #0#53#120#94#50 in Win32 und in Android #53#120#94#50#0

Das sieht mir bei Android wie ein nullterminierter String aus. Wie kann ich beide String-Inhalte deckungsgleich bekommen (oder in ein Array[1..n]).

Ich möchte nicht für zwei Betriebssysteme unterschiedlichen Code.

Danke.

Union 4. Feb 2014 15:43

AW: Strings in Win32 und Android
 
Die strings der mobile Compiler sind null-basierte Arrays. Arbeite mit copy anstelle direktem Arrayzugriff.

Bernhard Geyer 4. Feb 2014 16:11

AW: Strings in Win32 und Android
 
Zitat:

Zitat von SoftwPC (Beitrag 1246631)
Ich möchte nicht für zwei Betriebssysteme unterschiedlichen Code.

Dann nimm die String-Helper-Klassen wie Sie unter http://docwiki.embarcadero.com/RADSt...d_Desktop-Apps

p80286 4. Feb 2014 16:33

AW: Strings in Win32 und Android
 
So rein Interesse halber seit XE4 gibt es keine 1-basierten Strings mehr. Seit 2009 gibt es Unicode, und D7 hat mit Android nichts am Hut, Da passt das Muster
Zitat:

der String (einer Formel) '5x^2' enthält von
- Position 1 bis 4 die Zeichen #53#120#94#50 in Win32 und in Android #120#94#50#0
- Position 0 bis 4 die Zeichen #0#53#120#94#50 in Win32 und in Android #53#120#94#50#0
Irgendwie nicht ins Bild. oder gibt es für Android immer noch die alten Short-Strings?

Gruß
K-H

Der schöne Günther 4. Feb 2014 17:44

AW: Strings in Win32 und Android
 
Gibt das nicht auch mittlerweile schon eine Compilerwarnung wenn man so auf Strings zugreift?

himitsu 4. Feb 2014 18:44

AW: Strings in Win32 und Android
 
Es gab hier vor Kurzem auch einen Thread, wo es um diese Strings geht.

Low(string) = Index des ersten Zeichens
Low(StringVar) = ebenfalls
High(StringVar) = Index des letzen Zeichens


PS: Wenn du die Bereichsprüfung in den Projektoptionen anschaltest, dann sollte dir schnell auffallen, wo du auf einen falschen Index zugreifst.
(außer bei Copy und Co., denn die verschieben schon immer den Start-Parameter, wenn er nicht passt, was eigentlich nicht unbedingt die beste Idee war, so wie das implementiert wurde)

Bernhard Geyer 4. Feb 2014 20:43

AW: Strings in Win32 und Android
 
Zitat:

Zitat von p80286 (Beitrag 1246641)
So rein Interesse halber seit XE4 gibt es keine 1-basierten Strings mehr.

Stimmt nicht. Seit XE4 läuft der Compiler für Mobile auf neuer Basis (LLVM). Der "normale" Compiler für Windows und MacOS hat immer noch die alten 1-Basierten Strings.


Zitat:

Zitat von p80286 (Beitrag 1246641)
oder gibt es für Android immer noch die alten Short-Strings?

Im Link oben steht doch drin welche String-Typen es (offiziell) nicht mehr auf mobilen Geräten unterstütz werden.

Bernhard Geyer 4. Feb 2014 20:46

AW: Strings in Win32 und Android
 
Zitat:

Zitat von himitsu (Beitrag 1246665)
Es gab hier vor Kurzem auch einen Thread, wo es um diese Strings geht.

Low(string) = Index des ersten Zeichens
Low(StringVar) = ebenfalls
High(StringVar) = Index des letzen Zeichens

Ich würde die Helperklasse/methoden nehmen. Damit würde man auch Code produzieren die fast Identisch zu C#/Java-Code ist.

JamesTKirk 5. Feb 2014 06:29

AW: Strings in Win32 und Android
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1246692)
Zitat:

Zitat von p80286 (Beitrag 1246641)
So rein Interesse halber seit XE4 gibt es keine 1-basierten Strings mehr.

Stimmt nicht. Seit XE4 läuft der Compiler für Mobile auf neuer Basis (LLVM). Der "normale" Compiler für Windows und MacOS hat immer noch die alten 1-Basierten Strings.

Wobei man seit ich glaube XE2 mit
Delphi-Quellcode:
{$zerobasedstrings on}
dem Compiler sagen kann, dass man (lokal) mit 0-basierten Strings arbeiten möchte.

Gruß,
Sven

Der schöne Günther 5. Feb 2014 08:06

AW: Strings in Win32 und Android
 
Zitat:

Zitat von JamesTKirk (Beitrag 1246721)
Wobei man seit ich glaube XE2 mit
Delphi-Quellcode:
{$zerobasedstrings on}
dem Compiler sagen kann, dass man (lokal) mit 0-basierten Strings arbeiten möchte.

Cool, wieder was gelernt:
http://docwiki.embarcadero.com/RADSt...trings_(Delphi)

Leider ist der Gültigkeitsbereich nur lokal für die jeweilige Unit. Ein Compilerschalter (zusätzlich) wäre besser gewesen. :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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