AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Der linken seite kann nichts zugewiesen werden
Thema durchsuchen
Ansicht
Themen-Optionen

Der linken seite kann nichts zugewiesen werden

Ein Thema von Pseudemys Nelsoni · begonnen am 10. Nov 2004 · letzter Beitrag vom 10. Nov 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:50
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;

...
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#2

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:52
Zitat von Pseudemys Nelsoni:
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);
Var Temp:TChannel;
begin
  Channels[0].name := '#test';
  Temp:=ChannelByName('#test'); // so sollte es gehen :)
  Temp.topic := 'hi';
  showmessage(ChannelByName('#test').topic);
end;

...
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#3

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:52
Ganz einfach:ChannelByName('#test').topic := 'hi'; liefert einen konstanten Record. Was du da tust, ist einer Funktion einen Wert zuweisen, und das geht logischerweise nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:55
@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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:55
Zitat von The-X:
Delphi-Quellcode:
...

procedure TForm1.Button1Click(Sender: TObject);
Var Temp:TChannel;
begin
  Channels[0].name := '#test';
  Temp:=ChannelByName('#test'); // so sollte es gehen :)
  Temp.topic := 'hi';
  showmessage(ChannelByName('#test').topic);
end;

...
So gehts nicht. TChannel ist nämlich ein Record. Nach der Änderung muss der Original-Record im Array noch aktualisiert werden.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:58
kann ich mit der funktion nicht irgendwie einen pointer auf den rekord im array zurückgeben?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von The-X
The-X

Registriert seit: 31. Aug 2003
Ort: Woffelsbach / user.exe ;)
377 Beiträge
 
Delphi 7 Personal
 
#7

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:58
Stimmt

Lass dir doch den Index im Array zurückgeben und arbeite damit weiter *tipp*
WGET ftp://root@fbi.us.gov/secret/worldreign.exe <- damit werde ich die Weltherrschaft an mich reissen!
=> irc://irc.quakenet.eu.org:6667/delphi.de da werden Sie auch (manchmal) geholfen
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 15:58
Hi Pseudemys Nelsoni,

Versuchs mal so:
Delphi-Quellcode:
...

  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;

...
Du musst die Funktion den Index zurückgeben lassen, nicht den Record.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Der linken seite kann nichts zugewiesen werden

  Alt 10. Nov 2004, 16:13
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
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