Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Leerzeichen aus dem String löschen ? (https://www.delphipraxis.net/137544-leerzeichen-aus-dem-string-loeschen.html)

aaaaaaaaaa_10 23. Jul 2009 06:12


Leerzeichen aus dem String löschen ?
 
Hallo,

ich habe einen String áusgelesen und will ihn nun mit einem anderen Vergleichen, falls die beiden identisch sind, passieren Folgeaktionen. Jetzt das Problem:
Am ende des eingelesenen String ist eine freie Stelle. Ich dachte ein Leerzeichen,aber TRIM machte keinen Unterschied. Dannn dachte ich an einen Tab, aber Pos(#9,string) gab 0 aus.

Was könnte es noch sein und wie kriege ich es weg?

Corpsman 23. Jul 2009 06:23

Re: Leerzeichen aus dem String löschen ?
 
mach mal


Delphi-Quellcode:
showmessage(inttostr(ord(String[length(String)])));
dann kannst du den ascii code des Zeichens sehen.

aaaaaaaaaa_10 23. Jul 2009 06:30

Re: Leerzeichen aus dem String löschen ?
 
Das gibt ne 32 aus

Corpsman 23. Jul 2009 06:32

Re: Leerzeichen aus dem String löschen ?
 
ok dann wirds merkwürdig.

denn 32 ist der ascii code für das Leerzeichen.

Evtl postest du mal dein Programm als zip oder so, das man sich das mal ansehen kann.

mkinzler 23. Jul 2009 06:33

Re: Leerzeichen aus dem String löschen ?
 
Also ein Leerzeichen :gruebel:
Versuch es mal mit StringReplace()

aaaaaaaaaa_10 23. Jul 2009 06:37

Re: Leerzeichen aus dem String löschen ?
 
Und was soll ich ersetzen und wodurch?

alzaimar 23. Jul 2009 06:43

Re: Leerzeichen aus dem String löschen ?
 
Zeig doch einfach mal den Code, der angeblich nicht funktioniert. Ich weiss mit 100%iger Gewissheit, das man Leerzeichen durch 'Trim' wegschnippeln kann. Alternativen sind auch 'RightTrim' und 'LeftTrim'.

mkinzler 23. Jul 2009 06:44

Re: Leerzeichen aus dem String löschen ?
 
Zitat:

Zitat von aaaaaaaaaa_10
Und was soll ich ersetzen und wodurch?

Na #32 durch ''

aaaaaaaaaa_10 23. Jul 2009 06:47

Re: Leerzeichen aus dem String löschen ?
 
Ich glaube, es liegt gar nicht an dem Code, sondern an dem String bzw. dem & im String?
StatName=(c) 2007 by A&B

alzaimar 23. Jul 2009 06:58

Re: Leerzeichen aus dem String löschen ?
 
Nein, bestimmt nicht. Dazu ist der Quellcode von 'Trim' zu simpel gestrickt. Zeig bitte den Code, sonst wird das nichts.

aaaaaaaaaa_10 23. Jul 2009 07:03

Re: Leerzeichen aus dem String löschen ?
 
Delphi-Quellcode:
function TKomMainWnd.DateiNameRohdaten(StatNr: Integer): string;
var
  i,j: integer;
  SecList1, SecList2 : TStringList;
  SessionIni: TIniFile;
  ident, test1, test2 : string;
  liste: Tstrings;
begin
  SecList1 := TStringList.Create;
  SecList2 := TStringList.Create;
  try
    SessionIni := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Sessions.ini');
    with SessionIni do
    begin
      SessionIni.ReadSections(SecList1);
      for j := 0 to SecList1.Count - 1 do
      begin
          SessionIni.ReadSectionValues(SecList1[j],SecList2);
          ident := ('StatName='+Logger.StatParam.StatName);    
          if SecList2.IndexOf(ident) > -1 then
           begin
              RohdatenPfad := SessionIni.ReadString(SecList1[j],'Rohpfad','C:\Data')
          end else
            RohDatenPfad := DalosOptions.GetOption('RohdatenPfad','','DALOSWin')
      end;
    end;
  finally
    SecList2.Free;
    SecList1.Free;
  end;

angos 23. Jul 2009 07:17

Re: Leerzeichen aus dem String löschen ?
 
hi,

und wo vergleichst du da? OO

gruß
Ansgar

hazard999 23. Jul 2009 07:18

Re: Leerzeichen aus dem String löschen ?
 
Wo ist das Trim?

aaaaaaaaaa_10 23. Jul 2009 07:19

Re: Leerzeichen aus dem String löschen ?
 
Wenn ich mir den String ausgeben lasse : StatName=(c) 2007 by A&B ( Length = 25, also muss da noch was hinten dran sein)
Nach Trim / Trimright ist Length aber immer noch 25,also scheint es kein Leerzeichen zu sein..

aaaaaaaaaa_10 23. Jul 2009 07:20

Re: Leerzeichen aus dem String löschen ?
 
Zitat:

und wo vergleichst du da? OO
Ich schaue ob der string(ident) in der Datei vorhanden ist und unter welcher Sektion?

Delphi-Quellcode:
 if SecList2.IndexOf(ident) > -1 then

mkinzler 23. Jul 2009 07:21

Re: Leerzeichen aus dem String löschen ?
 
Zitat:

und wo vergleichst du da?
Passiert im .IndexOf()
Schau dir mal beide Strings im Debugger an

aaaaaaaaaa_10 23. Jul 2009 07:24

Re: Leerzeichen aus dem String löschen ?
 
Zitat:

Schau dir mal beide Strings im Debugger an
Wie mache ich das?

mkinzler 23. Jul 2009 07:40

Re: Leerzeichen aus dem String löschen ?
 
Breakpoint setzen und mit Maus über Varibale fahren bzw. zu überwachten Ausdrücken hinzufügen

angos 23. Jul 2009 07:52

Re: Leerzeichen aus dem String löschen ?
 
Zitat:

Zitat von aaaaaaaaaa_10
Wenn ich mir den String ausgeben lasse : StatName=(c) 2007 by A&B ( Length = 25, also muss da noch was hinten dran sein)
Nach Trim / Trimright ist Length aber immer noch 25,also scheint es kein Leerzeichen zu sein..


hmmm gestern war hier eine ähnliche Anfrage. Machst du
Delphi-Quellcode:
Trim(Variable);
oder
Delphi-Quellcode:
Varaible := Trim(Variable);
Sonst hab ich leider keine Idee mehr


gruß
Ansgar

aaaaaaaaaa_10 23. Jul 2009 08:35

Re: Leerzeichen aus dem String löschen ?
 
Trim(Variable) habe ich gemacht

AJ_Oldendorf 23. Jul 2009 08:38

Re: Leerzeichen aus dem String löschen ?
 
Du musst folgendes schreiben:

Delphi-Quellcode:
Variable := Trim(Variable);
Siehe Delphi Hilfe:

function Trim(const S: string): string;


Viele Grüße
Alex

aaaaaaaaaa_10 23. Jul 2009 08:43

Re: Leerzeichen aus dem String löschen ?
 
Ich glaub es ja nicht. Das geht? So ne Kleinigkeit. Aber vielen Dank an alle. :hello:

himitsu 23. Jul 2009 08:53

Re: Leerzeichen aus dem String löschen ?
 
Trim entfernt auch Zeilenumbrüche (#13 und #10), sowie Tabs (#9)

Ist das "zusätzliche" Leerzeichen vielleicht mitten im String?

Außerdem sollte der Debugger alle Zeichen anzeigen (Steuerzeichen werden da ja konvertiert)

alzaimar 23. Jul 2009 18:22

Re: Leerzeichen aus dem String löschen ?
 
Zitat:

Zitat von himitsu
Trim entfernt auch Zeilenumbrüche (#13 und #10), sowie Tabs (#9)

Welche 'Trim'-Version hast Du? Die in den SysUtils.Pas macht das nicht...

[edit]Bitte nicht so ernst nehmen. Erklärung weiter unten. hüstel [/edit]

himitsu 23. Jul 2009 18:28

Re: Leerzeichen aus dem String löschen ?
 
nicht?
ich dachte des war so :shock:

(und ja, ich verwende 'ne eigene Lib)

[add]
hatte doch Recht
<= ' '
entfernt Leerzeichen und alle Steuerzeichen im Bereich von #0 bis #32
Delphi-Quellcode:
function Trim(const S: string): string;
var
  I, L: Integer;
begin
  L := Length(S);
  I := 1;
  while (I <= L) and (S[I] <= ' ') do Inc(I);
  if I > L then Result := '' else
  begin
    while S[L] <= ' ' do Dec(L);
    Result := Copy(S, I, L - I + 1);
  end;
end;

alzaimar 23. Jul 2009 18:39

Re: Leerzeichen aus dem String löschen ?
 
'<=' war eben noch nicht in meiner SysUtils.Pas. :oops: Ehrlich nicht. Ich schwöre. Das ist grad eben erst dort erschienen.

Alter, ismir das peinlich.


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