Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ein Feld (char(100)) wird mit Leerzeichen ergänzt. (https://www.delphipraxis.net/14751-ein-feld-char-100-wird-mit-leerzeichen-ergaenzt.html)

mojo777 14. Jan 2004 23:14


ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo,

ich habe eine Datenbank wo jetzt irgendwie so plötzlich die darauf verwiesene Editfelder nicht vorhandene Zeiochen mit Leerzeichen ersetzen. Also ein Feld hat die Größe 100 Zeichen. Wenn ich da Mama reinschreibe, zeit ein dbEdit Feld "mama_____________________________________" Das ist ersichtlich doof.

Wer kann mir helfen?
Ich bin vorher mit soetwas noch nie konfrontiert worden und habe schon viel es ausprobiert. :wall:

Schonmal danke.

trifid 14. Jan 2004 23:16

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo,

welchen Datentyp hast Du verwendet Char(100) oder VarChar(100) ?

mojo777 14. Jan 2004 23:36

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
CHAAAAAAAR(100)

trifid 14. Jan 2004 23:41

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo,

dann ist doch alles klar
die Datenbank belegt bei Char(100) 100 Zeichen und diese siehst Du als spaces in Deiner Komponente
wenn Du die Möglichkeit hast, dann stelle auf varchar(100) um
hat aus meiner Erfahrung mehrere Vorteile
(auch beim Index und Geschwindigkeit ((abhängig vom Datenbankserver)) )

trifid 14. Jan 2004 23:44

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
was ich nocht vergessen habe
ich wüsste nicht wie man bei einen char(100) die "_____________________________________" Zeichen
wegbekommt, wenn man nicht sich eine neue Komponente dafür bauen möchte (die dieses Verhalten unterdrückt)

mojo777 15. Jan 2004 15:15

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
hmmmm naja... also eine neue komponente wäre dafür nicht unbedingt erfoderlich.
man könnte vielleicht was im "onChange" befehl ausbraten. trunc(oder war das trim? .... :oops: ) klappt bestimmt nicht auf ganzen string.
ich werde mir mal die stringfunktionen reinziehen. vielleicht klappt das irgend wie den string von hinten durchzukauen und falls string[index]=' ' then WegMitDemLeerzeichen;

naja. so viel dazu.

vielen dank für die Hilfe. Also ich werde wohl dann alle chras in varchar ändern.

trifid 15. Jan 2004 15:24

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo,

bei dem OnChange kam mir wieder was in Erinnerung ... :?
Wenn Du beim ADODataSet rechte Maus-Taste FeldEditor aufrufst
dann alle Felder hinzufügen
dann das jeweilige Feld auswählen
dann auf die die Ereignisleiste OnGetText und OnSetText, da kann man noch was manipulieren

Michael Leyhe 15. Jan 2004 15:59

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
HI
Wieso nimmst du eigentlich kein Array of string? Da wären dann keine Leerzeichen am Ende! Wenn der String aus maximal hundert Zeichen bestehen soll, dann kannst du auch mit string [100] arbeiten.

mojo777 15. Jan 2004 22:54

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo Michael,

also ich bin leider überhaupt kein kenner von delphi. Ich beherrsche lediglich ProgrammierGrundlagen. :cheers:
Naja....zur sache: wie meinst du das?
Also ich kann den string[100] wohl von 1 bis 100 abtasten. aber wie filtere ich das?
könnte sowas klappen?
Delphi-Quellcode:
var string2: array of string;
(..)
//string1 ist eins tring aus der db
i:=100;
while i>=0 do
begin
  if string1[i]<>' ' then
    begin
       checkvar:=i;
       break;
    end
    else
        i:=i-1; //gibt es das gegenteil von inc(i) ?? :stupid:
end;

i:=0;
for i to chkvar do
begin
  string2[i]:=string1[i];  //das ist der knackpunkt...
                            //klappt der spaß so einfach? 
                            //also bei php würde das glaube ich sogar laufen...

end;
könnte das so funktionieren? :corky:

SirThornberry 15. Jan 2004 23:46

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
an stelle deiner komichen schleife würd ich dann doch lieber
trim
nehmen

trifid 16. Jan 2004 09:29

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo,

das ufert ja mittlerweile aus
zu meinem Kommentar
"ich wüsste nicht wie man bei einen char(100) die "_____________________________________" Zeichen wegbekommt,"
damit meine ich die Zeichen in der Datenbank
das bedeutet, wenn die Zeichen im Formular weg sind, dann werden sie automatisch wieder in der Datenbank bei einem char-Feld aufgefüllt

ausserdem gibt es eine Funktion mit Namen Trim() (um spaces von einen String zu entfernen),
aber wie man sieht kann man es auch anders realisieren :-D

sakura 16. Jan 2004 09:33

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Wie schon richtig angemerkt, liegt das Problem im Datentypen.
Zitat:

Zitat von trifid
welchen Datentyp hast Du verwendet Char(100) oder VarChar(100) ?

CHAR ist unter vielen DB immer gleich lang und speichert keine Längenangabe. Somit wird der Rest immer mit #32 aufgefüllt. VarChar umgeht das Problem elegant und ohne weiteren Programmieraufwand, dieser Typ speichert auch die Längenangabe. Also einfach umstellen und fertig ;-)

...:cat:...

mojo777 17. Jan 2004 15:14

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
trim ist nicht gutta!
weil wegen "hallo du mausi" wird zu "hallodumaisi"
checked?
:arrow:

Brüggendiek 17. Jan 2004 21:49

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
Hallo!

Zitat:

Zitat von mojo777
trim ist nicht gutta!
weil wegen "hallo du mausi" wird zu "hallodumaisi"

:wiejetzt:
Bei mir (D5 Standard) wird aus " hallo du mausi " mittels Trim "hallo du mausi" - also auch die vorderen Leerzeichen werden entfernt. Aber nicht die im Text!
Es gibt außerdem noch TrimRight - entfernt die Leerzeichen am Ende - und TrimLeft - entfernt die Leerzeichen am Anfang.

Gruß

Dietmar Brüggendiek

mojo777 18. Jan 2004 13:25

Re: ein Feld (char(100)) wird mit Leerzeichen ergänzt.
 
:freak:
aha.... joah... danke.
schonal gut zu wisen.

ich habe die db korrigiert und jetzt ist die erscheinung weg.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:18 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 by Thomas Breitkreuz