![]() |
In Funktion Memo ändern
Hi, habe ein kleines Problem an dem ich grad hänge.. Ich habe ein Funktion geschrieben, die mir aus einem Quelltext alle Verweise auf eine andere Seite rauskopiert. Nun möchte ich das sie in eine ListBox eingetragen werden, aber ich kann scheinbar aus der Funktion heraus nicht auf eine ListBox oder so zugreifen..
hier ein Beispiel wie es nicht geht:
Delphi-Quellcode:
ich habe es auch mit einer globalen Variable versucht, will aber auch nicht so ganz :-(
if alllink = True then begin
link:=''; for nr2:=linkanfang to linkend do link:=link + s[nr2]; ShowMessage(link); ListBox1.Items.Add(link); mfg, bundaberg |
Re: In Funktion Memo ändern
Wo ist diese Prozedur deklariert? Als Methode? In welcher Unit?
|
Re: In Funktion Memo ändern
Ist die Funktion eine Methode deiner Form-Klasse? Wenn nicht, musst du das Formular mit angeben, auf dem sich deine Listbox befindet.
Davon mal abgesehen, sollte man die Daten und deren Verarbeitung immer von der Oberfläche trennen. Das macht den Code leichter wartbar, übersichtlicher und man kann ihn leichter wiederverwenden. |
Re: In Funktion Memo ändern
Moin Bundaberg,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Ich vermute mal stark, dass Du die ListBox in einer Funktion ansprechen willst, die keine Methode des Formulares ist, auf dem sich die Listbox befindet. Dann müsstest Du entweder aus der Funktion eine Methode machen, oder den Namen des Formulares noch davorschreiben.
Delphi-Quellcode:
Wenn sich die Funktion in der Unit des ersten Formulares befindet ist die erste Variante vorzuziehen, da sie dann ja logisch zum Formular gehört.
TForm1 = class(TForm)
//... function MeineFunktion : string; //... end; implementation function TForm1.MeineFunktion : string; begin // Hier kann dann die Listbox direkt angesprochen werden, wenn sie auf Form1 liegt end; //Oder function MeineFunktion : string; begin Form1.ListBox1..... end; |
Re: In Funktion Memo ändern
hmm.. und wie kann ich dann machen das ich nicht direkt die listbox anspreche, wenn es wie luckie sagt ungünstig ist?
Delphi-Quellcode:
aufgerufen wird sie ann einfach mit:
function LinksMarkieren(RichEdit: TRichEdit): String;
var s, link: String; nr, nr2, linkanfang, linkend: Integer; href, hrefend, alllink: Boolean; begin for nr:=0 to Length(RichEdit.Text) do begin s:=RichEdit.Text; if (s[nr] = '<') then href := True; if href then if (s[nr] = 'a') and (s[nr-1] = '<') then linkanfang:=nr-1; if (s[nr] = '/') and (href=true) then hrefend:=True; if hrefend and (href=true) then if (s[nr] = 'a') and (s[nr+1] = '>') then begin linkend := nr+1; alllink := True; end; if alllink = True then begin link:=''; for nr2:=linkanfang to linkend do link:=link + s[nr2]; ListedLinks:=ListedLinks + link; // das ist der versuch mit der globalen, aber ist nicht was ich will ListBox1.Items.Add(link); // damit hat er scheinbar ein problem... alllink := False; href := False; hrefend := False; end; end; end;
Delphi-Quellcode:
danke für eure Hilfe
procedure TForm1.Button2Click(Sender: TObject);
begin LinksMarkieren(RichEdit1); end; |
Re: In Funktion Memo ändern
Hi,
in deinem Fall müsste es wohl Form1.ListBox1.Items.Add() heißen, aber man hat dir ja schon beschrieben, warum das suboptimal ist. Hier noch ein thread, der sich auch mit deinem Problem beschäftigt hat: ![]() Freundliche Grüße vom marabu |
Re: In Funktion Memo ändern
ok, vielen dank an alle, so werde ich es jetzt erstmal machen. das es nicht die optimalste lösung ist hab ich verstanden, bin mir aber nicht sicher wie ich es noch anders lösen könnte :-)
danke nochmal, mfg bundaberg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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