AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zeigeroperation

Ein Thema von craash · begonnen am 28. Jan 2009 · letzter Beitrag vom 29. Jan 2009
Antwort Antwort
craash

Registriert seit: 23. Nov 2008
Ort: Mühlacker
79 Beiträge
 
Delphi 7 Enterprise
 
#1

Zeigeroperation

  Alt 28. Jan 2009, 19:28
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 ( ) 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
uses Delphi 5 Std. / TurboDelphi 2006
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zeigeroperation

  Alt 28. Jan 2009, 19:31
Ich sehe keinen Zeiger. Ich würde das Memo/die StringListe auch als Parameter übergeben
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.331 Beiträge
 
Delphi 12 Athens
 
#3

Re: Zeigeroperation

  Alt 28. Jan 2009, 22:31
Zeiger seh ich zwar, aber was du damit machst ... naja

ich werf' da einfach mal Hier im Forum suchenFindComponent in den Raum
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Zeigeroperation

  Alt 29. Jan 2009, 06:00
Ich war gestern wohl etwas blind. der Code lässt sich ja ausklappen
Markus Kinzler
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Zeigeroperation

  Alt 29. Jan 2009, 06:19
Ein ^String hat keine .Caption Property.

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

Und überhaupt ist dein Code irgendwie ... komisch.
  Mit Zitat antworten Zitat
craash

Registriert seit: 23. Nov 2008
Ort: Mühlacker
79 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Zeigeroperation

  Alt 29. Jan 2009, 13:45
jaa war ein wenig dumm...im grunde ging es eigentlich nur darum über den string den gleichnamigen button anzusprechen
uses Delphi 5 Std. / TurboDelphi 2006
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Zeigeroperation

  Alt 29. Jan 2009, 13:52
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
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]
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Zeigeroperation

  Alt 29. Jan 2009, 13:55
Eon Softcast wäre wohl besser oder vorher auf Typ prüfen
b := (FindComponent('meintollerbutton') as TButton);
Markus Kinzler
  Mit Zitat antworten Zitat
craash

Registriert seit: 23. Nov 2008
Ort: Mühlacker
79 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Zeigeroperation

  Alt 29. Jan 2009, 14:58
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 von inherited:
Was du suchst ist FindComponent
Du brauchst einen Button (var b: TButton) und dessen Name
mit
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!
uses Delphi 5 Std. / TurboDelphi 2006
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:47 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