![]() |
"Delete" funktioniert nicht
Hallo :)
Ich hab mal wieder nen Problem: Ich wollte aus meinem Array (ein String) die ersten beiden Zeichen löschen.
Delphi-Quellcode:
Die Fehlermeldung:
Delete(Array[x],1,2);
Zitat:
Grüße NeruvonoS |
Re: "Delete" funktioniert nicht
Was mir einfällt:
Der Array ist vom Typ ein Record. Die Stelle im Record aber ein String.
Delphi-Quellcode:
Das sollte aber eigentlich nicht stören oder?
Delete(Array[x].String,1,2);
|
Re: "Delete" funktioniert nicht
Zitat:
|
Re: "Delete" funktioniert nicht
Vorausgesetzt, das Array ist ein Array[x..y] of String, dann mal über eine Zwischenvariable gehen:
Delphi-Quellcode:
Das dürfte dann funktionieren ;)
var s: String;
s:=Array[x]; Delete(s,1,2); Array[x]:=s; |
Re: "Delete" funktioniert nicht
Okay ich machs doch mal etwas ausführlicher:
Delphi-Quellcode:
Ich Kopiere also den Array[x].Name ab der 3. Stelle(Da die ersten beiden = ' ' sind. und zwar soviele zeichen bis er das nächste ' ' findet. das nächste ' ' findet er aber nicht. Denn: pos sucht nur das 1. raus was er findet, dewegen möchte ich die ersten beiden zeichen kurzzeitig löschen und nicht ganz aus dem Array vernichten.
Button.Caption := Copy(Array[x].Name,3,pos(' ',System.Delete(Array[x].Name,1,2));
Zu System.Delete: [Error] Hauptteil.pas(410): Incompatible types Er sagt mir aber auch 'Incompatible types' wenn ich nur Delete nehme... ist also noch ein gedanken fehler drin... |
Re: "Delete" funktioniert nicht
Zitat:
|
Re: "Delete" funktioniert nicht
Wäre es möglich, dass man ein Array nicht "Array" nennen sollte und den Bezeichner "name" vermeiden sollte? Das könnte so manches durcheinander bringen. Vielleicht ist das der Grund?
|
Re: "Delete" funktioniert nicht
der array heißt nicht array,
aber was ist an Name so schlimm? |
Re: "Delete" funktioniert nicht
"Name" ist eigentlich ein reserviertes Wort, da viele Objecte/Komponenten die Eigenschaft "Name" haben. Da kann der Compiler schon mal ins stolpern kommen ;)
|
Re: "Delete" funktioniert nicht
Die Deklaration von Delete lautet
Delphi-Quellcode:
Damit ist ersichtlich, daß Delete keinen String zurückgibt, sondern den String im ersten Parameter ändert.
procedure Delete(var S: string; Index: Integer; Count: Integer);
Delphi-Quellcode:
tmpName := Array[x].Name;
Delete(tmpName, 1, 2); N := pos(' ', tmpName) - 1; // wir wollen den Blank ja nicht mit kopieren! if N < 0 then N := Length(tmpName); Button.Caption := Copy(tmpName, 1, N); // "1", da tmpName die ersten Blanks nicht mehr enthält |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12: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