AGB  ·  Datenschutz  ·  Impressum  







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

Hint aus ini Datei laden (mehrzeilig)

Ein Thema von Satyr · begonnen am 6. Dez 2014 · letzter Beitrag vom 6. Dez 2014
Antwort Antwort
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Hint aus ini Datei laden (mehrzeilig)

  Alt 6. Dez 2014, 16:48
Ah, verstehe. Vorher also auch neu abspeichern.
Ich werds gleich (nach dem Abendessen *g*) versuchen. Vielen Dank schon mal .
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hint aus ini Datei laden (mehrzeilig)

  Alt 6. Dez 2014, 17:34
Nur um das nochmal genau zu erklären:

In einer INI werden die Zeilenumbrüche zum Trennen der einzelnen Werte benutzt, also ist es nicht möglich Zeilenumbrüche innerhalb einzelner Werte zu verwenden.
Genauso, wie es nicht möglich ist, in den Value-Namen das "=" zu benutzen.

Lösungen:
  • Den gewünschten Text auf mehere Werte auteilen.
    Entweder mit zusätzlicher Zeilenangabe, damit man weiß wieviel man auslesen muß
    oder man liest, bis es nichts mehr zum Lesen gibt (hint4).
  • Die "ungültigen" Zeichen durch gültige Zeichen/Zeichenfolgen ersetzen.
  • Ein anderes Dateiformat benutzen, welches das gewünschte Feature bietet.


z.B.
Code:
[Komponente1]
hint1=Zeile 1
hint2=Zeile 2
hint3=Zeile 3

[Komponente1]
HintZeilen=3
hint1=Zeile 1
hint2=Zeile 2
hint3=Zeile 3

[Komponente1]
hint=Zeile 1,Zeile 2,Zeile 3

[Komponente1]
hint=Zeile 1<br>Zeile 2<br>Zeile 3
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Hint aus ini Datei laden (mehrzeilig)

  Alt 6. Dez 2014, 18:28
So, ich habe es wie empfohlen geändert und es funktioniert wunderbar, vielen dank nochmals .

Ich würde lügen, wenn ich schreiben würde ich hätte es vollständig verstanden. Ich glaube ich denke manchmal um zu viele Ecken. Für mich sieht es so aus, das die Breaks der ini Datei zwar übergeben wurden (in dieser waren Zeilenumbrüche) aber beim wieder einlesen alles als String übergeben wurde, auch die eigentlichen Steuerzeichen.

Wenn ich es richtig verstehe, setzt die Lösung von Uwe Raabe folgende Lösung um, oder?:

Code:
[Komponente1]
hint=Zeile 1,Zeile 2,Zeile 3
Ich hatte das auch in der Richtung überlegt, allerdings den String deutlich unsauberer auseinander und wieder zusammen gesetzt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Hint aus ini Datei laden (mehrzeilig)

  Alt 6. Dez 2014, 23:01
Für mich sieht es so aus, das die Breaks der ini Datei zwar übergeben wurden (in dieser waren Zeilenumbrüche) aber beim wieder einlesen alles als String übergeben wurde, auch die eigentlichen Steuerzeichen.
Die INI-API geht nunmal davon aus, daß der Programmierer es richtig macht und prüft nicht auf ungültige Zeichen, weswegen man eben auch "ungültige" Zeilenumbrüche rein bekommt.
Aber beim Auslesen weiß die API nunmal nicht, daß dort falsche Zeilenumbrüche drin vorkommen und liest die Werte bis zum ersten Zeilenumbruch.

Genauso ist es Problemlos möglich eine #0 in einen String reinzumachen, aber bei Übergabe als PChar (z.B. an ein Label oder Memo) ist dort eben Schluß, da #0 eben das Ende angibt.

Oder nimm dir eine TStringList, schreib dort in einen Value einen mehrzeiligen Text ... das funktioniert dort sogar, solange man nicht über .Text zugreift oder den Inhalt in eine Datei speichert und voallem wieder aussliest.

Delphi-Quellcode:
SL.Add('123' + sLineBreak + '456');
//SL.Count = 1
SL.Text := SL.Text;
//SL.Count = 2
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Dez 2014 um 23:05 Uhr)
  Mit Zitat antworten Zitat
Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Hint aus ini Datei laden (mehrzeilig)

  Alt 6. Dez 2014, 23:43
Liest sich erschreckend logisch .

Es ist Wahnsinn was ich in diesem Forum alles gelernt habe, seit ich da bin. Ich trage zwar selbst nicht wirklich was bei aber alleine durch ständiges mitlesen, hab ich mehr gelernt als irgendwo sonst, Berufsschule vor einem Jahrzehnt mit eingeschlossen *g*.
  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 10:42 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