![]() |
Der linken seite kann nichts zugewiesen werden
moin,
jemand ne ahnung was hieran falsch ist?
Delphi-Quellcode:
...
TChannel = record name: string; topic: string; end; TChannels = array[0..4] of TChannel; var Channels: TChannels; ... function ChannelByName(channel: string): TChannel; var i: integer; begin for i := low(channels) to high(channels) do if channels[i].name = channel then result := channels[i]; end; procedure TForm1.Button1Click(Sender: TObject); begin Channels[0].name := '#test'; ChannelByName('#test').topic := 'hi'; // hier der fehler showmessage(ChannelByName('#test').topic); end; ... |
Re: Der linken seite kann nichts zugewiesen werden
Zitat:
|
Re: Der linken seite kann nichts zugewiesen werden
Ganz einfach:
Delphi-Quellcode:
liefert einen konstanten Record. Was du da tust, ist einer Funktion einen Wert zuweisen, und das geht logischerweise nicht.
ChannelByName('#test').topic := 'hi';
|
Re: Der linken seite kann nichts zugewiesen werden
@The-X: danke, mal checken ;)
@DAX: ich muss doch irgendwie eine funktion mit einem rekord verknüpfen können oder? ich möchte nicht jedes mal in meinem code das ausführen was meine funktion da tut (also die schleife) ich möchte das ERGEBNIS der funktion benutzen + .topic und ihm was zuweisen.... geht das denn gar nicht? |
Re: Der linken seite kann nichts zugewiesen werden
Zitat:
grüße, daniel |
Re: Der linken seite kann nichts zugewiesen werden
kann ich mit der funktion nicht irgendwie einen pointer auf den rekord im array zurückgeben?
|
Re: Der linken seite kann nichts zugewiesen werden
:wall: :wall: :wall: Stimmt :gruebel:
Lass dir doch den Index im Array zurückgeben und arbeite damit weiter *tipp* |
Re: Der linken seite kann nichts zugewiesen werden
Hi Pseudemys Nelsoni,
Versuchs mal so:
Delphi-Quellcode:
Du musst die Funktion den Index zurückgeben lassen, nicht den Record.
...
TChannel = record name: string; topic: string; end; TChannels = array[0..4] of TChannel; var Channels: TChannels; ... function ChannelIndexByName(channel: string): Integer; var i: integer; begin Result := -1; i := low(channels); while (i <= high(channels)) and (result = -1) do begin if channels[i].name = channel then result := i; Inc(i); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Channels[0].name := '#test'; Channels[ChannelIndexByName('#test')].topic := 'hi'; showmessage(ChannelByName('#test').topic); end; ... Greetz alcaeus |
Re: Der linken seite kann nichts zugewiesen werden
Hi,
gestatte mir die Frage, warum du kein Objekt verwendest, sprich die Möglichkeiten von Delphi ausnutzt (Stichwort OOP). Wenn du da mit Propertys etc. arbeitest, schaffst du das wesentlich angenehmer. :? Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 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