Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Delete" funktioniert nicht (https://www.delphipraxis.net/142176-delete-funktioniert-nicht.html)

NeruvonoS 23. Okt 2009 08:31


"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:
Delete(Array[x],1,2);
Die Fehlermeldung:
Zitat:

[Error] Hauptteil.pas(411): Incompatible types: 'String' and 'procedure, untyped pointer or untyped parameter'
Weiß wer was mir das sagen möchte?

Grüße
NeruvonoS

NeruvonoS 23. Okt 2009 08:35

Re: "Delete" funktioniert nicht
 
Was mir einfällt:
Der Array ist vom Typ ein Record. Die Stelle im Record aber ein String.
Delphi-Quellcode:
Delete(Array[x].String,1,2);
Das sollte aber eigentlich nicht stören oder?

Uwe Raabe 23. Okt 2009 08:35

Re: "Delete" funktioniert nicht
 
Zitat:

Zitat von NeruvonoS
Weiß wer was mir das sagen möchte?

"Das ist nicht das Delete, das du meinst! Dein Delete heißt hier System.Delete"

Progman 23. Okt 2009 08:36

Re: "Delete" funktioniert nicht
 
Vorausgesetzt, das Array ist ein Array[x..y] of String, dann mal über eine Zwischenvariable gehen:
Delphi-Quellcode:
var s: String;

  s:=Array[x];
  Delete(s,1,2);
  Array[x]:=s;
Das dürfte dann funktionieren ;)

NeruvonoS 23. Okt 2009 08:59

Re: "Delete" funktioniert nicht
 
Okay ich machs doch mal etwas ausführlicher:
Delphi-Quellcode:
Button.Caption := Copy(Array[x].Name,3,pos(' ',System.Delete(Array[x].Name,1,2));
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.
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...

NeruvonoS 23. Okt 2009 09:02

Re: "Delete" funktioniert nicht
 
Zitat:

Zitat von Progman
Das dürfte dann funktionieren ;)

Leider auch nicht. Wäre ja auch sinnlos wenn man es anstatt in eine in 3 schreiben muss, damit es funktioniert.

Progman 23. Okt 2009 09:17

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?

NeruvonoS 23. Okt 2009 09:19

Re: "Delete" funktioniert nicht
 
der array heißt nicht array,
aber was ist an Name so schlimm?

Progman 23. Okt 2009 09:23

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 ;)

Uwe Raabe 23. Okt 2009 09:25

Re: "Delete" funktioniert nicht
 
Die Deklaration von Delete lautet

Delphi-Quellcode:
procedure Delete(var S: string; Index: Integer; Count: Integer);
Damit ist ersichtlich, daß Delete keinen String zurückgibt, sondern den String im ersten Parameter ändert.

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 15:58 Uhr.
Seite 1 von 2  1 2      

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