Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Geisterhafte Zeichen im String entfernen ($D#$A) (https://www.delphipraxis.net/88811-geisterhafte-zeichen-im-string-entfernen-%24d-%24.html)

Ajin 21. Mär 2007 14:00

Datenbank: mysql • Version: 4 • Zugriff über: mysqllib.dll

Geisterhafte Zeichen im String entfernen ($D#$A)
 
Ich nutze diese Funktion:
Delphi-Quellcode:
GetResult     : Function (SQLResult:Pchar;ResultLen:Integer):Boolean;
Der Aufruf:
Delphi-Quellcode:
var ResultLen, pos_x, i : Integer;
    SQLResult : PChar;
    resultstring: String;

ResultLen := QuerySQL('datenbankname'
                            ,Pchar('select user_pw from tomaten_user where user_name = "'+ e_login.text + '"'));
     
      memo_news.Lines.Add('Speicherbedarf: ' + IntToStr(ResultLen));
      getMem(SQLResult, ResultLen);
      GetResult(SQLResult, ResultLen);
      resultstring := String(SQLResult);
Das SQL-Ergebnis der Abfrage sieht so aus: Tomaten#$D#$A

Mein gewünschtes Ergebnis wäre Tomaten. Dieser Anhang #$D#$A muss weg, ich weiss auch nicht wo er herkommt. Im Memo steht dann wirklich das Wort Tomaten, aber der Debugger zeigt diesen komischen Anhang an.

Wenn ich nun Tomaten mit Tomaten#$D#$A vergleiche stimmt das natürlich nicht überein. Deshalb wollte ist das #$D#$A mit Pos und Delete wegoptimieren.

Delphi-Quellcode:
      pos_x := Pos('#', resultstring);
      if pos_x <> 0 then
      begin
        Delete(resultstring, pos_x, 6);
      end;
Komischerweise wird nie ein # gefunden. Was mach ich wieder falsch?

Gruselige Grüsse JJ

sh17 21. Mär 2007 14:08

Re: Geisterhafte Zeichen im String entfernen ($D#$A)
 
#d#a entspricht 0x10 0x13 und damit einem Zeilenumbruch.

Bekommst Du z.B. mit Trim() weg.

Robert Marquardt 21. Mär 2007 14:11

Re: Geisterhafte Zeichen im String entfernen ($D#$A)
 
Der Debugger zeigt nicht anzeigbare ASCII-Zeichen in einer Erstznotation. Die Darstellung ist die Notation fuer Zahlen vom Typ Char in Hex in Delphi-Sourcen.
Die beiden Zeichen heissen CarriageReturn und LineFeed und stellen einen Zeilenwechsel dar.
Einfach die beiden letzten Zeichen des Strings loeschen und fertig.
S := Copy(S, 1, Length(S) - 2);

Ajin 21. Mär 2007 14:15

Re: Geisterhafte Zeichen im String entfernen ($D#$A)
 
Ah das ist ja interessant ! Gut zu wissen und erneut meinen Dank an euch.
:dp:


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