Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kann Delphi jetzt kein s[1] mehr? (https://www.delphipraxis.net/43035-kann-delphi-jetzt-kein-s%5B1%5D-mehr.html)

derpepe 27. Mär 2005 22:16


Kann Delphi jetzt kein s[1] mehr?
 
Geht nicht :-(

Die Funktion soll die Leerzeichen am Anfang eines Strings zählen.
Warum geht das so nicht? Ist Delphi jetzt doof? Oder ich? Sonst ging das doch immer so??

Delphi-Quellcode:
  function countspacesinfront(s:string):integer;
  var
    z:integer;
    sx:string;
  begin
    sx:=s;
    z:=0;
    while sx[1]=' ' do begin
      sx:=copy(sx,2,length(sx)-1);
      inc(z);
    end;
    countspacesinfront:=z;
  end;

ReDoX 27. Mär 2005 22:19

Re: Kann Delphi jetzt kein s[1] mehr?
 
hi,
was geht da nicht?
Muesste das nicht
Delphi-Quellcode:
 result := z;
anstatt
Delphi-Quellcode:
 countspacesinfront:=z;
heißen?

Mfg ReDoX

Torpedo 27. Mär 2005 22:19

Re: Kann Delphi jetzt kein s[1] mehr?
 
Bei mir funktionierts :gruebel: (Delphi 7 Personal)

@Redox: Kann man beides machen.

Matze 27. Mär 2005 22:20

Re: Kann Delphi jetzt kein s[1] mehr?
 
Geht bei mir ohne Probleme, was klappt denn nicht?

mr47 27. Mär 2005 22:21

Re: Kann Delphi jetzt kein s[1] mehr?
 
Könntest du bitte "Geht nicht" etwas präzisieren...

derpepe 27. Mär 2005 22:24

Re: Kann Delphi jetzt kein s[1] mehr?
 
Geht nicht soll heißen, dass das Teil bei mir immer 0 ausspuckt.
Wenn ich jetzt mit
Delphi-Quellcode:
showmessage(inttostr(countspacesinfront(einstring)));
dat Ergebnis ausgeben lasse bekomm ich ne Access Violation...

derpepe 27. Mär 2005 22:25

Re: Kann Delphi jetzt kein s[1] mehr?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Die ganze Funktion lautet so
Delphi-Quellcode:
procedure THauptfenster.fuelleListe(liste:tstrings; identifier,name:string);
var
  temp:string;
  position,i:integer;

  function countspacesinfront(s:string):integer;
  var
    z:integer;
    sx:string;
  begin
    sx:=s;
    z:=0;
    while sx[1]=' ' do begin
      sx:=copy(sx,2,length(sx)-1);
      inc(z);
    end;
    countspacesinfront:=z;
  end;

begin
  liste.Clear;

  for i:=0 to scintilla1.Lines.Count-1 do begin
    temp:=Scintilla1.lines[i];
    temp:=cutby(temp);

    if lowercase(copy(temp,1,length(identifier)))<>lowercase(identifier) then continue;

    position:=scintilla1.positionfromline(i)+countspacesinfront(temp);
    if getattribut(position)=11 then
      liste.add(cutby(temp)) else
      liste.add(cutby(temp)+' ('+inttostr(position)+')');
  end;
end;
is a bisserl blöd weil das aus nem Projekt stammt.
Kurz zu den verwendeten Funktionen:
cutby schneidet einem String die vorderen und hinteren Leerzeichen ab und entfernt Kommentare
getattribut liest die Farbe im Quelltext aus

Der Rest dürfte klar sein...


Hab ich vielleicht bei den Compiler-Parametern einen Scheiß eingestellt?

Matze 27. Mär 2005 22:29

Re: Kann Delphi jetzt kein s[1] mehr?
 
Funktion in einer Prozedur, sowas mag ich gar nicht *g*

Teste mal die Funktion einzelnd, ob sie bei dir dann den erwünschten Effekt liefert.

derpepe 27. Mär 2005 22:33

Re: Kann Delphi jetzt kein s[1] mehr?
 
Ach Mann:
Delphi-Quellcode:
position:=scintilla1.positionfromline(i)+countspacesinfront(temp);
muss vor der Zeile
Delphi-Quellcode:
temp:=cutby(temp);
stehen, sonst ist ja klar dass 0 rauskommt :-)
Cutby schneidet ja alle Leerstellen ab *g*

Aber das mit der AV bleibt.
Wenn ich
Delphi-Quellcode:
s[1]
aber durch
Delphi-Quellcode:
copy(s,1,1)
ersetze funktioniert es?!

Binärbaum 27. Mär 2005 22:37

Re: Kann Delphi jetzt kein s[1] mehr?
 
Zitat:

Zitat von derpepe
Aber das mit der AV bleibt.
Wenn ich
Delphi-Quellcode:
s[1]
aber durch
Delphi-Quellcode:
copy(s,1,1)
ersetze funktioniert es?!

Kann es sein, dass der String zu dem Zeitpunkt leer ist, also die Länge null hat?
Dann würde s[1] auch eine AV verursachen, copy hingegen nicht.

MfG
Binärbaum


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 Uhr.
Seite 1 von 4  1 23     Letzte »    

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