![]() |
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; |
Re: Kann Delphi jetzt kein s[1] mehr?
hi,
was geht da nicht? Muesste das nicht
Delphi-Quellcode:
anstatt
result := z;
Delphi-Quellcode:
heißen?
countspacesinfront:=z;
Mfg ReDoX |
Re: Kann Delphi jetzt kein s[1] mehr?
Bei mir funktionierts :gruebel: (Delphi 7 Personal)
@Redox: Kann man beides machen. |
Re: Kann Delphi jetzt kein s[1] mehr?
Geht bei mir ohne Probleme, was klappt denn nicht?
|
Re: Kann Delphi jetzt kein s[1] mehr?
Könntest du bitte "Geht nicht" etwas präzisieren...
|
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:
dat Ergebnis ausgeben lasse bekomm ich ne Access Violation...
showmessage(inttostr(countspacesinfront(einstring)));
|
Re: Kann Delphi jetzt kein s[1] mehr?
Liste der Anhänge anzeigen (Anzahl: 2)
Die ganze Funktion lautet so
Delphi-Quellcode:
is a bisserl blöd weil das aus nem Projekt stammt.
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; 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? |
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. |
Re: Kann Delphi jetzt kein s[1] mehr?
Ach Mann:
Delphi-Quellcode:
muss vor der Zeile
position:=scintilla1.positionfromline(i)+countspacesinfront(temp);
Delphi-Quellcode:
stehen, sonst ist ja klar dass 0 rauskommt :-)
temp:=cutby(temp);
Cutby schneidet ja alle Leerstellen ab *g* Aber das mit der AV bleibt. Wenn ich
Delphi-Quellcode:
aber durch
s[1]
Delphi-Quellcode:
ersetze funktioniert es?!
copy(s,1,1)
|
Re: Kann Delphi jetzt kein s[1] mehr?
Zitat:
Dann würde s[1] auch eine AV verursachen, copy hingegen nicht. MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 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