AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language AnsiString zu String zuweisen ohne Konvertierung?
Thema durchsuchen
Ansicht
Themen-Optionen

AnsiString zu String zuweisen ohne Konvertierung?

Ein Thema von Rolf Frei · begonnen am 7. Dez 2019 · letzter Beitrag vom 10. Dez 2019
Antwort Antwort
Seite 4 von 4   « Erste     234   
Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#31

AW: AnsiString zu String zuweisen ohne Konvertierung?

  Alt 9. Dez 2019, 16:51
Also hier funktioniert das tadellos mit den Bytes und UnicodeStrings und AnsiStrings. Du darfst nur nicht mit den UnicodeStrings das encode/decode machen. Dafür nimmst du dann die Bytes.
Delphi-Quellcode:
var
  a: AnsiString;
  b: TBytes;
  s: String;
begin
  a := #$33#$95#$34;
  s := a;
  { Der Inhalt von s interessiert hier nicht. Zur Verarbeitung wandeln wir das in Bytes um. }
  b := TEncoding.ANSI.GetBytes(s);
  Assert(b[0] = $33);
  Assert(b[1] = $95);
  Assert(b[2] = $34);
  a := s;
  Assert(a = #$33#$95#$34);
end;
Ich habe jetzt gerade kein Beispiel mit TInifile, aber mit LoadFromFile(<filename>, TEncoding.Ansi) sollte das ebenso funktionieren.
Beim TIniFile gibt es kein LoadFromFile. Lesen/Schreiben von INI-Files funktioniert nicht auf Filebasis wie eine TStringList. Da wird kein File geladen, da ist das OS dafür zuständig. Da ist auch der Unterschied zum TMemIniFile. Sobald ich im TIniFile eine Wert schreibe ist dieser im File enthalten. Beim TMemIniFile wird das File erst beim Free gespeichert. Das lädt immer das ganze File in den Speicher und schreibt auch wieder das ganze File auf den Disk.

So kann man mit dem TIniFile aus mehreren Progammen gleichzeitig Werte in das Inifile schreiben, ohne dass da was überschieben würde. Beim TMemIniFile steht jeweils nur das drin, was das zuletzt gespeicherte Progamm gespeichert hat. In einer Multiuser Umgebung ist das also sehr ungünstig.

TIniFile schreibt nur die Key/Werte Paare die man will und liest auch nur die, die man will.

Danke nochmals für die Tips.

PS. @TiGü
Dass das OS da das File jeweils öffnet und schliest ist ja logisch. Aber der Unterschied ist halt, dass TIniFile Multiuser/Multiappfähig ist und TMemIniFile nicht.

Geändert von Rolf Frei ( 9. Dez 2019 um 16:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: AnsiString zu String zuweisen ohne Konvertierung?

  Alt 9. Dez 2019, 18:31
Beim TIniFile gibt es kein LoadFromFile.
Beim TMemIniFile gibt es die StringList,
aber wie schon erwähnt gibt es die WinAPI für INIs als ANSI und Unicode, und da jeder API-Aufruf ein "eigenständiger" Zugriff ist, lassen sich die APIs mischen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#33

AW: AnsiString zu String zuweisen ohne Konvertierung?

  Alt 10. Dez 2019, 07:03
Ich würde immer noch eher die IN-Datei im richtigen Format ablegen und gut ist. Kein Programmieraufwand (maximal für das Schreiben dieser, falls überhaupt notwendig).
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.380 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: AnsiString zu String zuweisen ohne Konvertierung?

  Alt 10. Dez 2019, 07:17
Vermutlich ist es nicht die INI, sondern je eine INI bei 1000 Anwendern ...
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#35

AW: AnsiString zu String zuweisen ohne Konvertierung?

  Alt 10. Dez 2019, 08:25
PS. @TiGü
Dass das OS da das File jeweils öffnet und schliest ist ja logisch. Aber der Unterschied ist halt, dass TIniFile Multiuser/Multiappfähig ist und TMemIniFile nicht.
DAAAAS...ist übrigens eine ganz ganz andere Anforderung, als was du ursprünglich gefragt hattest.

Davon abgesehen:
Was ist das denn? Da schreiben X Benutzer parallel auf einer einzelnen Datei? Wirklich?
Das muss dir doch schon drölfzigmal um die Ohren geflogen sein.

Oder ist es so, wie freimatz vermutet, und jeder Windows-Benutzer hat eine eigene INI-Datei (die hoffentlich in seinem Benutzer spezifischen Ordner liegen)?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 19:05 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