AGB  ·  Datenschutz  ·  Impressum  







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

Strings in Win32 und Android

Ein Thema von SoftwPC · begonnen am 4. Feb 2014 · letzter Beitrag vom 5. Feb 2014
Antwort Antwort
SoftwPC

Registriert seit: 24. Jan 2014
33 Beiträge
 
Delphi 10.3 Rio
 
#1

Strings in Win32 und Android

  Alt 4. Feb 2014, 15:30
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 15:43
Die strings der mobile Compiler sind null-basierte Arrays. Arbeite mit copy anstelle direktem Arrayzugriff.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union ( 4. Feb 2014 um 16:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 16:11
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
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 16:33
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 17:44
Gibt das nicht auch mittlerweile schon eine Compilerwarnung wenn man so auf Strings zugreift?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 18:44
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Feb 2014 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 20:43
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.


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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Strings in Win32 und Android

  Alt 4. Feb 2014, 20:46
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Strings in Win32 und Android

  Alt 5. Feb 2014, 06:29
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 {$zerobasedstrings on} dem Compiler sagen kann, dass man (lokal) mit 0-basierten Strings arbeiten möchte.

Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Strings in Win32 und Android

  Alt 5. Feb 2014, 08:06
Wobei man seit ich glaube XE2 mit {$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.
  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 17:59 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