AGB  ·  Datenschutz  ·  Impressum  







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

String-Interna nutzen

Ein Thema von himitsu · begonnen am 19. Sep 2010 · letzter Beitrag vom 20. Sep 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: String-Interna nutzen

  Alt 19. Sep 2010, 21:31
Das ist doch eigentlich einer der Vorteile, denn vorallem .DataSize sollte gegen dieses Unicode-"Debakel" helfen.
Abgesehn davon enthält dieser Code BorCodEmbas Konventionen für Strings.
Und dieses sogenannte Unicode-"Debakel" kam gerade dadurch, daß man sich eben nicht an die Konentionen gehalten hat.

Ich hab in einem Projekt ne eigene Stringkonvertierung (ohne TEncoding und Co.) implementiert und da war es schon nötig, wenn ich diese Interna auch ordnungsgemäß setze, vorallem CodePage und die CharSize.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Sep 2010 um 21:33 Uhr)
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: String-Interna nutzen

  Alt 20. Sep 2010, 12:04
vorallem CodePage
Dafür gibt es System.SetCodePage

Zitat:
und die CharSize.
Von dem Feld solltest du unbedingt die Finger lassen. Das Feld wird nur für nicht ordentlich migrierte C++Builder Projekte benötigt. Delphi Code braucht es nicht, da niemals (außer der Programmierer schießt sich selbst ins Bein) ein UnicodeString einen AnsiString-Payload und umgekehrt enthalten kann. Dafür sorgt der Compiler.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: String-Interna nutzen

  Alt 20. Sep 2010, 12:28
Ich find es gut, zu wissen wo ggf. welche Daten stehen.
Zumindestens dem Auslesen zwecks Überprüfung steht dann nichts mehr im Wege.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: String-Interna nutzen

  Alt 20. Sep 2010, 12:31
Mal unabhängig davon, ob man es jetzt benutzen sollte oder nicht, ist es auf jeden Fall ein eleganter Hack
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: String-Interna nutzen

  Alt 20. Sep 2010, 12:41
Ich find es gut, zu wissen wo ggf. welche Daten stehen.
Zumindestens dem Auslesen zwecks Überprüfung steht dann nichts mehr im Wege.
Was willst du da überprüfen? Wenn ich den Ölstand meines Autos wissen will, dann reicht es mir, wenn ich den Ölmessstab überprüfe. Ich muss nicht wisse, wie die Ölwanne aussieht und wo sie sich genau befindet. Was anderes ist es, wenn ich den Ölstand überprüfe, in dem ich an die Ölwanne klopfe und an Hand des Geräusches Rückschlüsse über den Ölstand mache. Aber so bald beim nächsten Modell die Ölwanne wo anders ist oder anders aussieht, sind meine bisherigen Erfahrungen wertlos.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: String-Interna nutzen

  Alt 20. Sep 2010, 13:05
Und jetzt versuche mal etwas, welches Viele seit langem nutzen.

Einen AnsiString (selbst mit ShareMem) zwischen DLL und EXE übergreifend zu nutzen ... aber 'ne PreD2009-DLL/EXE wird nicht mit etwas ab D2009 kompatibel sein.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: String-Interna nutzen

  Alt 20. Sep 2010, 16:46
Und jetzt versuche mal etwas, welches Viele seit langem nutzen.

Einen AnsiString (selbst mit ShareMem) zwischen DLL und EXE übergreifend zu nutzen ... aber 'ne PreD2009-DLL/EXE wird nicht mit etwas ab D2009 kompatibel sein.
Beides mit Delphi 2009+ kompilieren oder "Wrapper DLL" erstellen.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: String-Interna nutzen

  Alt 20. Sep 2010, 16:57
Einen AnsiString (selbst mit ShareMem) zwischen DLL und EXE übergreifend zu nutzen ... aber 'ne PreD2009-DLL/EXE wird nicht mit etwas ab D2009 kompatibel sein.
Na dann viel Spaß, wenn du die die ElemSizeoder die CodePage da auslesen willst. Schützt du das ganze dann mit try/except und verifizierst, dass die Daten auch gültig sind? Denn Delphi 2-2007 Strings haben keine CodePage und ElemSize, also ist der StrRec auch nur 8 Bytes groß. Bei Delphi 2009+ ist er 12 Byte groß. Wenn du nun auf einen Delphi 2-2007 AnsiString mit deiner CodePage und ElemSize Methode zugreifst, bekommst du entweder eine Zugriffsverletzung, oder liest aus einem fremden Speicherbereich (oder aus dem MemMgr Kontrollblock).
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: String-Interna nutzen

  Alt 20. Sep 2010, 18:43
Denn Delphi 2-2007 Strings haben keine CodePage und ElemSize
Genau das mein ich doch

Da das mit den Generics nicht so funktioniert, wie ich es mir vorstellte, mach ich nun meine eigenen Generics.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: String-Interna nutzen

  Alt 20. Sep 2010, 13:09
[QUOTE=Luckie;1050755.... Aber so bald beim nächsten Modell die Ölwanne wo anders ist oder anders aussieht, sind meine bisherigen Erfahrungen wertlos.[/QUOTE]

Nun ich verstehe eine Angabe wie "Codepage" so wie den Zettel, der im Motorraum angebracht wird "1. Salatölqualität SAE 10W-50 nächster Wechsel bei km Stand 150 000". Die kann ich ignorieren, ist aber manchmal doch ganz hilfreich (wenn sie denn stimmt). Aber auf jeden fall besser zu sagen das "könnte", als mit den Schultern zu zucken und zu sagen "ist flüssig und fettig".

Gruß
K-H

P.S.
Bei uns hat ein Dienstleister vor kurzem ein paar Texte in einer DB "zerbröselt" weil er irgendwo mit den falschen Codepages hantiert hat. Darum gefällt mir die Vorstellung ggf. irgendwo nachschauen zu können ungemein!
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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:33 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