Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeigeroperation (https://www.delphipraxis.net/128371-zeigeroperation.html)

craash 28. Jan 2009 20:28


Zeigeroperation
 
Guten Abend,

Ich entschuldige mich erstmal für den Threadtitel, mir ist einfach nichts eingefallen wie ich mein Problem in wenigen Worten hätte umreißen können. :?

Mein Problem ist folgendes:

Delphi-Quellcode:
{Delphi 5 Std.}

function membufferscan(a:string) : boolean;
begin
     if pos(a, Form1.membuffer.Lines.Text) > 0 then Result := true
     else result := false;
end;


[...]


procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var strings: array [1..9] of string;
    x:integer;
    p:^string;
begin
     strings[1] := 'FEins';
     strings[2] := 'FZwei';
     strings[3] := 'FDrei';
     strings[4] := 'FVier';
     strings[5] := 'FFuenf';
     strings[6] := 'FSechs';
     strings[7] := 'FSieben';
     strings[8] := 'FAcht';
     strings[9] := 'FNeun';

     for x:=1 to 9 do
         begin
         if membufferscan(strings[x]) = true then
            begin
            break;
            p := @x;
            p^:= strings[x];
            p^.caption := 'X';   {hier findet der fehler statt}                   
            end;
Ich möchte in einem Memo (hier genannt 'membuffer') nach einem best. String suchen und je nach Ergebnis einen best. Button beschriften. Zufälligerweise ( :mrgreen: ) heißen die Strings, nach denen in einer Schleife gesucht werden soll, genau gleich wie die Buttons, von denen einer je nach Ergebnis beschriftet werden soll.
Das Ganze wollte ich an dieser Stelle (nach einer absurden Idee xD ) mit einem Zeiger lösen, aber irgendwie will Delphi an dieser Stelle nicht ganz wie ich :(
Der angezeigte Fehler lautet 'Record, Objekt oder Klassentyp erforderlich'.

Nun meine Frage:
Ist solch eine Operation nicht möglich wie ich das hier beabsichtige? Wenn ja wie? :)

Ich bedanke mich schon einmal für Antworten und Hilfestellungen.


MfG

mkinzler 28. Jan 2009 20:31

Re: Zeigeroperation
 
Ich sehe keinen Zeiger. Ich würde das Memo/die StringListe auch als Parameter übergeben

himitsu 28. Jan 2009 23:31

Re: Zeigeroperation
 
Zeiger seh ich zwar, aber was du damit machst ... naja :roll:

ich werf' da einfach mal Hier im Forum suchenFindComponent in den Raum

mkinzler 29. Jan 2009 07:00

Re: Zeigeroperation
 
Ich war gestern wohl etwas blind. der Code lässt sich ja ausklappen :oops:

nuclearping 29. Jan 2009 07:19

Re: Zeigeroperation
 
Ein ^String hat keine .Caption Property.

Außerdem verlässt du den Block durch "break" bereits, bevor der darunterstehende Code ausgeführt werden kann? :gruebel:

Und überhaupt ist dein Code irgendwie ... komisch. :mrgreen:

craash 29. Jan 2009 14:45

Re: Zeigeroperation
 
jaa war ein wenig dumm...im grunde ging es eigentlich nur darum über den string den gleichnamigen button anzusprechen :duck: :mrgreen:

inherited 29. Jan 2009 14:52

Re: Zeigeroperation
 
Das geht erstmal schöner:
Zitat:

Delphi-Quellcode:
function membufferscan(a:string) : boolean;
begin
     result := pos(a, Form1.membuffer.Lines.Text) > 0;
end;

Was du suchst ist FindComponent
Du brauchst einen Button (var b: TButton) und dessen Name
mit
Delphi-Quellcode:
b := TButton(FindComponent('meintollerbutton'));
kannst du den zuweisen, und dann mit b.caption dessen caption setzen.
Allerdings solltest du noch darauf achten, dass der Button wirklich existiert

[edit=mkinzler]Codehighlighting eingefügt Mfg, mkinzler[/edit]

mkinzler 29. Jan 2009 14:55

Re: Zeigeroperation
 
Eon Softcast wäre wohl besser oder vorher auf Typ prüfen
Delphi-Quellcode:
b := (FindComponent('meintollerbutton') as TButton);

craash 29. Jan 2009 15:58

Re: Zeigeroperation
 
Zitat:

Zitat von inherited
Das geht erstmal schöner:
Zitat:

Delphi-Quellcode:
function membufferscan(a:string) : boolean;
begin
     result := pos(a, Form1.membuffer.Lines.Text) > 0;
end;


wurde bereits geändert :)


Zitat:

Zitat von inherited
Was du suchst ist FindComponent
Du brauchst einen Button (var b: TButton) und dessen Name
mit
Delphi-Quellcode:
b := TButton(FindComponent('meintollerbutton'));
kannst du den zuweisen, und dann mit b.caption dessen caption setzen.
Allerdings solltest du noch darauf achten, dass der Button wirklich existiert

war genau das was ich gesucht hatte. habs derweil umständlich via case anweisungen umgangen :-/
vielen dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 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