Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - E2034 bei Verwendung von Delete (Stringbearbeitung)


OsCor - Do 26.01.12 11:12
Titel: E2034 bei Verwendung von Delete (Stringbearbeitung)
Hallo Foristen,

bei meinen ersten Gehversuchen in XE habe ich in folgendem Quelltext den Fehler E2034 erhalten (zu viele Parameter). Ich bin mir aber keiner Schuld bewußt.
In der Hilfe habe ich allerdings keinerlei Hinweise auf die Existenz dieser procedure gefunden. Kann es sein, dass es sie in XE gar nicht mehr gibt?


Delphi-Quelltext
1:
2:
3:
4:
5:

SP := Pos(S, Zeile);
FieldByName('Bearbeiter').AsString := Copy(Zeile, 1, SP-1);
Delete(Zeile, 1, SP);


Oswald


Tastaro - Do 26.01.12 11:50

Ich tippe, dass er sich auf ein anderes Delete bezieht. Z.B. auf eines aus der Klasse in der du die Prozedur aufrufst.

Probier mal

Delphi-Quelltext
1:
system.Delete(Zeile, 1, SP);                    


OsCor - Do 26.01.12 11:58

In der Zeile, in der ich das ausprobiert habe, wird der Fehler beim Kompilieren tatsächlich nicht mehr moniert. Aber ich habe noch nicht kapiert, was da passiert. Und da wäre ich sehr daran interessiert.

Oswald

P.S. Natürlich kann man die Delete-Prozedur durch eine entsprechende Zeile mit Copy ersetzen, aber ich habe in etlichen Anwendungen Delete in „größerem” Umfang eingesetzt. Bei einer Portierung stünde mir etliche Arbeit ins Haus.


Martok - Do 26.01.12 12:14

Und deswegen benutzt man kein With (oder jedenfalls nur in sehr begrenzten Fällen): da passieren sehr seltsame Dinge, die man selten direkt überblickt :roll:

Ich nehme mal an, das sieht so aus?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
with SomeTable do begin
...
SP := Pos(S, Zeile);
FieldByName('Bearbeiter').AsString := Copy(Zeile, 1, SP-1);
Delete(Zeile, 1, SP);
...
end;

Dann wird Delete auf SomeTable.Delete aufgelöst, und das hat keine Parameter.


OsCor - Do 26.01.12 12:26

Völlig richtig. Darauf hätte ich wirklich auch selber kommen können :oops:

Vielen Dank
Oswald