AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi Windows-Kompatibilität von Strings erhalten
Thema durchsuchen
Ansicht
Themen-Optionen

Windows-Kompatibilität von Strings erhalten

Ein Thema von QuickAndDirty · begonnen am 19. Mär 2016 · letzter Beitrag vom 24. Mär 2016
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#1

Windows-Kompatibilität von Strings erhalten

  Alt 19. Mär 2016, 12:39
Hallo!

Ich Schreibe eine Anwendung für Android und IOs und Windwos Desktop. Die App soll auf Desktops laufen um leicht präsentierbar zu sein. Und auch auf Windows Tabletts zuhause sein.

Jetzt wo ich die Kommunikation der App angehe stoße ich auf ein Problem.

Die AnsiStrings.

Ich habe mir das angesehen wenn ich die in 0-basierte ByteArrays umwandle geht das alles...nicht mehr auf dem Desktop,
denn da verhalten sich "String" Variablen 1-basiert.

Gibts ne Möglichkeit die Stringvariablen auf dem Windows Desktop auch 0-basiert zu machen?

Ich würde gerne weitgehend einen einzigen Code für alle Zielplattformen Entwickeln.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (19. Mär 2016 um 12:41 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Windows-Kompatibilität von Strings erhalten

  Alt 19. Mär 2016, 12:59
Verwende den record helper für den Stringtyp.
Markus Kinzler
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#3

AW: Windows-Kompatibilität von Strings erhalten

  Alt 19. Mär 2016, 13:30
Verwende den record helper für den Stringtyp.
Das gedachte ich zu tun, wenn du den TStringHelper meintest.
Ich muss also alle Copy, Replacestring, Delete &c aufrufe durch passende aus tStringhelper ersetzen.

Also werde ich um zwei konvertierungsmethoden für ByteArrays nicht rum kommen, je nach dem ob es 0-based strings oder 1-bases strings sind.

Dann fehlen noch all die lieb gewonnenen String-Manipulations Methoden für Bytearrays....
Wo kann ich da protestieren?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Windows-Kompatibilität von Strings erhalten

  Alt 19. Mär 2016, 13:35
Der Helper sollte die Unterschiede zwischen den Plattformen berücksichtigen und unabhängig von ihnen immer das selbe Ergebnis liefern.
Markus Kinzler
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#5

AW: Windows-Kompatibilität von Strings erhalten

  Alt 21. Mär 2016, 17:27
Wenn ich in TIDContext.IOHandler.DefStringEncoding
Beides mal ASCIIencoding habe. Was lese ich dann in der Mobile-App mit dem TIDContext.IOHandler.Readln Befehl aus?

Ist das Ergebnis ein String mit mit 2 Byte für jedes Byte im Ascii-String der von Windows gesendet wurde?
Oder ist da Ergebnis ein Unicode String der jeweils zwei Original Ascii Zeichen in ein Unicodezeichen codiert?
Wenn es ersteres ist, was ist dann mit Zeichen die garnicht Teil des Ascii codes sind,
wie "ÖÄÜ" die sind ja durch codepage 1252 Kodiert, aber diese angaben kann ich bei Indy nicht machen, oder?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Windows-Kompatibilität von Strings erhalten

  Alt 21. Mär 2016, 17:42
Low(string) = 0 oder 1 oder man könnte das "komische" neue Verhalten einfach abschalten {$ZEROBASEDSTRINGS ON/OFF}
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#7

AW: Windows-Kompatibilität von Strings erhalten

  Alt 21. Mär 2016, 17:50
Wenn ich in TIDContext.IOHandler.DefStringEncoding
Beides mal ASCIIencoding habe. Was lese ich dann in der Mobile-App mit dem TIDContext.IOHandler.Readln Befehl aus?

Ist das Ergebnis ein String mit mit 2 Byte für jedes Byte im Ascii-String der von Windows gesendet wurde?
Oder ist da Ergebnis ein Unicode String der jeweils zwei Original Ascii Zeichen in ein Unicodezeichen codiert?
Wenn es ersteres ist, was ist dann mit Zeichen die garnicht Teil des Ascii codes sind,
wie "ÖÄÜ" die sind ja durch codepage 1252 Kodiert, aber diese angaben kann ich bei Indy nicht machen, oder?
Wenn es Cross-Encoding gehen soll, würde ich die Strings immer im UTF8 Encoding versenden.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.930 Beiträge
 
Delphi 12 Athens
 
#8

AW: Windows-Kompatibilität von Strings erhalten

  Alt 24. Mär 2016, 15:04
Danke, euch allen.
Ich habe die String-Behandlung jetzt komplett auf den TStringhelper umgestellt.
Und einige coole Abkürzungen bietet der auch noch.(Split & Joyn Hallelulja, EndsWith, Startwith, Trim(['"']) usw.)
MeinString.Chars[0] liefert ja auf allen Plattformen das erste Zeichen usw.

Indy war kein so großes Problem wie angenommen. Auf das Encoding des Servers habe ich keinen Einfluss, aber wenn man es als AsciiEncoding empfängt liefert Readln im Client dennoch einen brauchbaren Unicodestring.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (24. Mär 2016 um 15:07 Uhr)
  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 06: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