Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

Alex_ITA01 28. Aug 2014 13:10


StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
im Anhang ist eine Textdatei, die ich wie folgt lade:

Delphi-Quellcode:
MyStringList.LoadFromFile(Dateiname);
Memo1.Lines.Text := MyStringList.Text;
MyStringList ist vom Typ TStringList und ist auch initialisiert.
Diese Stringliste wird benötigt, da ich diese noch woanders verwende.

Der Inhalt der Datei soll in dem Memo angezeigt werden nur leider wird nach einer bestimmten Stelle in der Zeile 2 abgebrochen (nach der "...62"). Ich weiß allerdings nicht warum, habt ihr eine Idee?

Gruß


Edit:
nach der ...62 kommt Hex 00 01
Das habe ich grad im Hexeditor gesehen.
Das 01 steht für SOH.
ich möchte aber wie in der Datei wirklich vorhanden ist auch darstellen.

Alex_ITA01 28. Aug 2014 13:30

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Anscheind kommt die StringList mit Steuerzeichen nicht klar.
Wie kann ich es irgendwie hinbekommen das die Steuerzeichen beim einlesen evtl. ignoriert werden oder ähnliches, da ich die StringList wirklich benötige (Funktionen wie Clear, Count usw. werden alle gebraucht).

Grüße

Union 28. Aug 2014 13:32

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Das Null-Byte wird aber als Stringende interpretiert. Du solltest Die Datei über einen Stream einlesen und jedes Byte in einen Hexcode umwandeln. Das kannst Du dann in das Memo schreiben. Alternativ könntest Du auch nur die Zeichen mit einem Code < 32 in eine andere Notation wandeln (z.b. $00) und dann in den Text einmischen.

Eine Stringlist hat eben diese Einschränkungen, dass diese Seuerzeichen interpretiert werden. Wenn Du das nicht willst, musst Du Dir eine eigene Stringliste schreiben.

himitsu 28. Aug 2014 13:33

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Erstmal muß man beim Laden in die TStringList auf das PChar #0 achten, denn das wird eventuell als Endemarker interpreteirt.

Und dann nutzt seit 2009 die TStirngList ein Encoding, welches standardmäßig den Text von ANSI nach Unicode umwandelt.



Also,

Textdaten in TStringList oder TStringStream = OK (man sollte eventuell das Encoding beachten, wenn nicht ANSI und kein BOM vorhanden)
Binärdaten = böst, es geht nicht alles und wenn man es dennoch versucht, dann muß man halt Einiges beachten



PS: Selbst wenn die TStringList die #0 nicht beachtet ... das Memo hört da dennoch auf, da PChar-API.

Alex_ITA01 28. Aug 2014 13:48

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Das ist ja echt blöd...

@Embacadero:
Hiermit beantrage ich mal eine Funktion, die das kann. Das wäre ja mal was, was auch jemand braucht/gebrauchen kann. Könnt ihr ja mal nachdenken in XE7 nachzurüsten. Ansonsten lohnen sich nämlich eure neuen Versionen für mich leider überhaupt nicht, da ich nur für Win32/64 programmiere.

Also, denkt mal über Änderungen an diesen Sachen nach und nicht immer den anderen Plattformen nachrennen...

Grüße

Sir Rufo 28. Aug 2014 13:59

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Ja so eine DeveloperMind API. Eine Komponente draufklatschen und schon macht das Programm das, was sich der Entwickler gedacht hat. Das würde die Entwicklungszeiten erheblich verküzen. :roll:

Alex_ITA01 28. Aug 2014 14:02

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
ok, soweit muss es ja in XE7 noch nicht gehen.
Irgendwas soll ja in XE8 auch noch implementiert werden ;-)

Nein aber im Ernst, man könnte der Stringliste ja irgendwie eine Eigenschaft verpassen "UseControlChars"...

Viele Grüße

Sir Rufo 28. Aug 2014 14:07

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Oder man berücksichtigt das, was dort in der Datei gespeichert ist und das ist eben nicht nur Text.

Spätestens jetzt sollte hier das :idea: angehen, dass man diese Datei eben nicht so behandeln kann, als wäre da nur Text drin.

Union 28. Aug 2014 14:09

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Du kriegst das dann aber trotzdem nicht angezeigt, da der Text in das Memo per WM_SETTEXT übertragen wird. Und diese Nachricht übermittelt die Adresse eines PChar an das Betriebssystem.

Alex_ITA01 28. Aug 2014 14:10

AW: StringList LoadFromFile -> Memo soll Inhalt anzeigen
 
Verstanden habe ich es schon :idea:

Schön wäre es ja trotzdem wenn es geht :-D

Egal jetzt. Thema ist durch :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr.
Seite 1 von 3  1 23      

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