Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Trim entfernt führende Tabulatoren??? (https://www.delphipraxis.net/203398-trim-entfernt-fuehrende-tabulatoren.html)

hoika 13. Feb 2020 20:55

Trim entfernt führende Tabulatoren???
 
Hallo,
ich lese per gstat aus Firebird die ODS-Version,
nein ;) das ist kein DB-Thema

Ergebnis z.B.
#9'ODS version'#9#9'11.0 '

Ein Trim ergibt
'ODS version'#9#9'11.0'

Das hintere Leerzeichen wird entfernt, OK, ist ja Trim,
aber: wieso wird auch das erste #9 entfernt???

In den Quellen zum Trim steht das auch so drin
S[I] <= ' '
und Ord(#9) ist kleiner als Ord(' ') ist

venice2 13. Feb 2020 21:01

AW: Trim entfernt führende Tabulatoren???
 
Nun ja ich würde das korrekte Trim verwenden und nicht rumraten warum weswegen Trim das tut.
TrimRight sollte für deinen Fall das richtige sein.

Trim schneidet beide seiten ab.
Siehe http://www.delphibasics.co.uk/RTL.asp?Name=TrimRight

(EDIT)
Zitat:

The Trim function removes blank and control characters (such as line feed) from the start and end of a string.

Luckie 13. Feb 2020 21:03

AW: Trim entfernt führende Tabulatoren???
 
TrimLeft: nur links bereinigen
TrimRight: nur rechts bereinigen
Trim: links und rechts bereinigen

Was passiert bei TrimLeft?

Trim scheint einen Tabulator auch als Leerzeichen zu behandeln.

hoika 13. Feb 2020 21:12

AW: Trim entfernt führende Tabulatoren???
 
Hallo,
TrimLeft schneidet den linken Tab ab.

Es wird ebend nicht auf =" " geprüft, sondern auf < " ".

Ich war jetzt nur dolle verblüfft.


Aber:
http://www.delphibasics.co.uk/RTL.asp?Name=Trim
The Trim function removes blank and control characters (such as line feed) from the start and end of a string.

Also zählt #9 zu den control characters.
Gut zu wissen.


Mein Code funktioniert. Zufällig wollte ich alle #9 verschwinden lassen.
Ich war halt nur verdutzt, dass das Trim auch das erste #9 verschwinden läßt.


Also:
Alles gut.

venice2 13. Feb 2020 21:18

AW: Trim entfernt führende Tabulatoren???
 
Zitat:

Aber:
http://www.delphibasics.co.uk/RTL.asp?Name=Trim
The Trim function removes blank and control characters (such as line feed) from the start and end of a string.
So wie ich schrieb.
Aber funktioniert ja wie du sagst. Alles gut. ;)

bcvs 14. Feb 2020 06:47

AW: Trim entfernt führende Tabulatoren???
 
Zitat:

Zitat von hoika (Beitrag 1457436)
Also zählt #9 zu den control characters.
Gut zu wissen.

In der Delphi-Hilfe steht es noch genauer und eindeutig:

Zitat:

Trim entfernt alle am Anfang und Ende des mit S angegebenen Strings vorhandenen Leer- und Steuerzeichen.

Im 7-Bit-ASCII-Zeichensatz, der in ANSI X3.4-1977 (C0 und G0) definiert ist, sind "Steuerzeichen" als die Zeichen definiert, deren Code zwischen 0 und 31 liegt.

hoika 14. Feb 2020 07:05

AW: Trim entfernt führende Tabulatoren???
 
Hallo,
tja, wieder was Neues gelernt ;)

freimatz 14. Feb 2020 07:30

AW: Trim entfernt führende Tabulatoren???
 
https://en.wikipedia.org/wiki/Control_character

p80286 14. Feb 2020 08:40

AW: Trim entfernt führende Tabulatoren???
 
Ich hab mal in den sourcen von D7 nachgeschaut
Delphi-Quellcode:
Trim
entfernt alles was kleinergleich " " ist. Es könnten also auch "normale" Zeichen verschwinden, die in diesem Bereich angesiedelt wurden. (es gibt da mind. einen ASCII-Dialekt). Und die Steuerzeichen im Bereich x80..9F sind nicht betroffen.

Gruß
K-H

freimatz 14. Feb 2020 08:45

AW: Trim entfernt führende Tabulatoren???
 
ASCII-Dialekt? Was soll das sein? Ich kenne dazu nur https://de.wikipedia.org/wiki/Americ...on_Interchange und da finde ich sowas nicht.

Codehunter 14. Feb 2020 09:48

AW: Trim entfernt führende Tabulatoren???
 
Tipp: System.SysUtils.TStringHelper.Trim kennt einen optionalen Parameter "TrimChars" wo du die dir nicht genehmen Zeichen explizit angeben kannst.

TurboMagic 14. Feb 2020 18:00

AW: Trim entfernt führende Tabulatoren???
 
Zitat:

Zitat von hoika (Beitrag 1457436)
Aber:
http://www.delphibasics.co.uk/RTL.asp?Name=Trim
The Trim function removes blank and control characters (such as line feed) from the start and end of a string.

Also zählt #9 zu den control characters.
Gut zu wissen.

Ja, alle Zeichen mit Code < 32 dez. (32 dez ist das Leerzeichen) sind Steuerzeichen.
Schicke mal spasseshalber etwas ASCII Text an einen Laserdrucker und wundere dich warum der
nicht raus kommt. Danach schickst du dann doch mal noch ein #12 hinterher und siehe da,
plötzlich druckt er deinen Text.

Warum? Weil Laserdrucker immer nur seitenweise drucken können und #12 das Steuerzeichen
für "Seite auswerfen" (auch auf nicht Laserdruckern) ist...
Erst dann ist für den die Seite zuende und er kann losdrucken.

Luckie 14. Feb 2020 18:35

AW: Trim entfernt führende Tabulatoren???
 
Das heißt, ich könnte keinen Text aus Notepad ausdrücken? Kann ich irgendwie nicht glauben. Und so weit ich mich erinnern kann, habe ich das schon erfolgreich in der Schule, in der ich gearbeitet habe, getan.

p80286 14. Feb 2020 20:04

AW: Trim entfernt führende Tabulatoren???
 
Das kommt auf Deinen Drucker an, es gibt welche die sich ohne Formfeed oder "Zeilenüberlauf" nicht dazu bewegen lassen ein Blatt auszugeben. Andere haben/hatten ein Timeout nachdem der Speicher auf das Papier transferiert wird und das Blatt ausgegeben wird. Es kann aber auch sein, das ein Ctrl-Z den Blattvorschub auslöst. Da ist jeder Drucker individuell, bzw. die Software die das Druckwerk ansteuert.

Gruß
K-H

p80286 14. Feb 2020 20:19

AW: Trim entfernt führende Tabulatoren???
 
Zitat:

Zitat von freimatz (Beitrag 1457457)
ASCII-Dialekt? Was soll das sein? Ich kenne dazu nur https://de.wikipedia.org/wiki/Americ...on_Interchange und da finde ich sowas nicht.

Dann schau mal hier:https://de.wikipedia.org/wiki/Codepage_437
(Wenn du Dich an dem Wort "Dialekt" störst, entschuldige bitte)

Gruß
K-H

Luckie 14. Feb 2020 20:38

AW: Trim entfernt führende Tabulatoren???
 
Ah. OK. Hätte mich auch ziemlich gewundert. Denn sonst könnte man ja auch keine grafischen Sachen ausdrücken. Also es geht irgendwie immer.

Codehunter 15. Feb 2020 06:22

AW: Trim entfernt führende Tabulatoren???
 
Es macht ja auch einen Unterschied, ob man einen Drucker mit oder ohne Treiber ansteuert. Historisch bedingt sind Drucker wohl die einzigen Geräte, die noch am ehesten ohne Treiber funktionieren. Kassenbondrucker sind da ein Paradebeispiel. Die meisten kann man direkt per Escape-Sequenz ansteuern. Die Ausnahme sind hier die Billigst-GDI-Drucker. Die werden so genannt, weil sie ein Blatt Papier als Bildfläche abbilden und nur per Treiber ansteuerbar sind. Technisch sind die eher einem Bildschirm als einem Drucker ähnlich.

Es war so ziemlich meine erste Programmiertätigkeit, einen Nadeldrucker per Escape-Sequenz anzusteuern. Damit konnte man nicht nur Drucken sondern auch Töne ausgeben, indem man den Druckkopf mit unterschiedlichen Zeichenfolgen beschickt hat.

Luckie 15. Feb 2020 08:52

AW: Trim entfernt führende Tabulatoren???
 
Also ohne Treiber benötigt man die Seitenende-Escape-Sequenz damit er druckt. Wenn das richtig ist, habe ich das Prinzip verstanden. Und ich kann das Thema befriedigt abschliessen.

TurboMagic 15. Feb 2020 11:21

AW: Trim entfernt führende Tabulatoren???
 
Zitat:

Zitat von Luckie (Beitrag 1457554)
Das heißt, ich könnte keinen Text aus Notepad ausdrücken? Kann ich irgendwie nicht glauben. Und so weit ich mich erinnern kann, habe ich das schon erfolgreich in der Schule, in der ich gearbeitet habe, getan.

Naja, Notepag hängt das benötigte #12 einfach an bzw. wird das der Druckertreiber tun, wenn ihm die
druckende Anwendung das Seiten- oder gar das Dokumentenende signalisiert.

Grüße
TurboMagic


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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