Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi StringList LoadFromFile -> Memo soll Inhalt anzeigen (https://www.delphipraxis.net/181604-stringlist-loadfromfile-memo-soll-inhalt-anzeigen.html)

himitsu 28. Aug 2014 14:17

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Delphi-Quellcode:
MyStringList.LoadFromFile(Dateiname);
Memo1.Lines.Text := MyStringList.Text;

// oder

MyStringList.LoadFromFile(Dateiname);
Memo1.Lines.Assign(MyStringList);

// oder

MyStringList.LoadFromFile(Dateiname);
Memo1.Lines.Clear;
Memo1.Lines.AddStrings(MyStringList);

// oder einfach nur

Memo1.Lines.LoadFromFile(Dateiname);
Beim LoadFromFile siehe Encoding-Parameter.


Und daß das Memo bei #0 aufhört, ist völlig normal ... es ist eine Sache der WinAPI und da kann Emba auch rein garnichts machen.
Es währe grob fahrlässig, wenn Emba hier einfach eine Zeichenkonvertierung in die TStringList einbaut, nur weil du keine Lust hast die Daten richtig zu laden und notfalls "ungültige" Zeichen zu ersetzen.

Neutral General 28. Aug 2014 14:21

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Was willst du überhaupt angezeigt haben?
Und wofür? Ich hab so das Gefühl dass dein ganzer Steuerzeichen-Kram nicht so das Wahre ist.

Oder anders gefragt: Was hast du überhaupt vor in deinem Projekt?

Alex_ITA01 28. Aug 2014 14:26

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Eins vorab:
Ich habs verstanden warum es nicht geht und hoffe keine weitere Diskussion draus zu machen.

Es liegen mir eben manchmal Dateien vor, die Steuerzeichen enthalten und manchmal eben nicht.
Ich möchte aber mit ein und der selben Routine, diese Datei einlesen und anzeigen.

Ich möchte eben auch die Funktionen wie Delete, Count usw. einer TStringList nehmen, deswegen gehe ich auch über die TStringList.

Wichtig für mich sind nicht die Steuerzeichen anzuzeigen oder kryptische Zeichen, ich will den normalen Text, der dahinter vielleicht wieder kommt sehen.

Ich könnte mir also die TStringList überschreiben und beim Laden evtl. vorhandene Steuerzeichen einfach raus löschen.
Ich will die ja gar nicht haben/sehen.

Grüße

Sir Rufo 28. Aug 2014 14:28

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Wenn so ein Dateiinhalt angezeigt werden soll, dann muss man sich in Abhängigkeit von der verwendeten Anzeigekomponente um die Präsentierung der Daten kümmern.

Ein TMemo kann nur Text anzeigen und bei einem #0 wird alles danach verworfen (nicht angezeigt).
Also kann man für die Anzeige diese #0 durch etwas anderes ersetzen (z.B. mit
Delphi-Quellcode:
'#00'
). Das eignet sich natürlich nicht mehr zum Bearbeiten.

Oder man bemüht eine andere Komponente (im Zweifelsfall muss man sich eine selber erstellen), die dass dann so anzeigt, wie es Notepad++ macht.

Alex_ITA01 28. Aug 2014 14:30

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Ich will es doch gar nicht anzeigen !!
:twisted:

Sir Rufo 28. Aug 2014 14:31

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Zitat:

Zitat von Alex_ITA01 (Beitrag 1270160)
Es liegen mir eben manchmal Dateien vor, die Steuerzeichen enthalten und manchmal eben nicht.
Ich möchte aber mit ein und der selben Routine, diese Datei einlesen und anzeigen.

Niemand hält dich davon ab, alle Daten zunächst durch eine Methode zu jagen, wo alle unliebsamen Steuerzeichen entfernt werden (wenn die unnötig sind).

Sind keine enthalten, werden die auch nicht entfernt.

himitsu 28. Aug 2014 14:44

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Es gibt nunmal einige Zeichen, die nicht "darstellbar" sind.

Das sind vorallem die Contols C0 (also alles vor dem Leerzeichen > #0 bis #31)
und auch im Controls C1 (#128..#159) sind manchmal solche Zeichen drin. (je nach Codepage, bzw. Interpreter)

http://www.unicode.org/charts/

Und weiter oben im Unicode gibt es ebenfalls bestimmte Bereiche, wo dieses gilt.
Vorallem siehe unten die komplette rechte Spalte (Specials bis Noncharacters in Charts)

Für die Contols C0 gibt es "sichtbare" Zeichen, welche man als Ersatz für die Steuerzeichen nutzen kann, wenn man sie anzeigen will.
Technical Symbols > Control Pictures



Steuercodes sind Steuercodes. Sie steuern also irgendwas und (standardmäßig) zeigen nichts an, jenachdem wer sie ob und wie interpretiert.

Und dann kommt es auch noch auf die verwendete Schriftart und registrierte Weiterleitungen drauf an, welche Zeichen letztendlich tatsächlich darstellbar sind.

DeddyH 28. Aug 2014 14:46

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Du willst es in ein Memo schreiben, aber nicht anzeigen? :gruebel:

Alex_ITA01 28. Aug 2014 14:48

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Ja ich will die Datei im Memo anzeigen und nein, ich will in dem Memo die Steuerzeichen nicht sehen.

Ich werde jetzt einfach vor dem Laden der Datei prüfen, ob ich Steuerzeichen darin finde, diese dann ggf. rauslöschen und wieder meine Stringlist Routine zum einlesen nehmen.

Grüße

DeddyH 28. Aug 2014 14:51

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Das ist doch im Wesentlichen das, was Sir Rufo beschrieben hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr.
Seite 2 von 3     12 3      

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