AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListBox1 unbekannt in eigener prozedur

Ein Thema von Simatix · begonnen am 3. Jun 2010 · letzter Beitrag vom 10. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Simatix

Registriert seit: 3. Jun 2010
Ort: Freiburg
1 Beiträge
 
#1

ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 21:45
Hallo Zusammen,

ich habe ein Problem, bzw. evtl mehrere..... Ich habe eine eigene Prozedur in der ich eine ListBox1 beschreiben will.
Dort ist diese aber nicht bekannt ? Warum ist mir nicht klar. Der Momentane Quellcode sieht so aus:

Delphi-Quellcode:
unit RS232Main;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Menus, ImgList, InfoForm;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    EdtSend1: TEdit;
    BtnSend1: TButton;
    EdtSend2: TEdit;
    BtnSend2: TButton;
    EdtSend3: TEdit;
    BtnSend3: TButton;
    EdtSend4: TEdit;
    BtnSend4: TButton;
    EdtSend5: TEdit;
    BtnSend5: TButton;
    EdtSend6: TEdit;
    BtnSend6: TButton;
    GroupBox1: TGroupBox;
    Image1: TImage;
    StaticText1: TStaticText;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Extras1: TMenuItem;
    N1: TMenuItem;
    Parameterdateisichern1: TMenuItem;
    Parameterdateiladen1: TMenuItem;
    Schnittstelle1: TMenuItem;
    Info1: TMenuItem;
    Speichern1: TMenuItem;
    N2: TMenuItem;
    Beenden1: TMenuItem;
    ImageListMenu: TImageList;
    GroupBox2: TGroupBox;
    LabelStatusEdit: TLabel;
    ClearKonsole1: TMenuItem;
    RS2321: TMenuItem;
    Ethernet1: TMenuItem;
    N3: TMenuItem;
    Parameter1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Beenden1Click(Sender: TObject);
    procedure Info1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ClearKonsole1Click(Sender: TObject);
    procedure Parameterdateiladen1Click(Sender: TObject);
    procedure Speichern1Click(Sender: TObject);
    procedure Parameterdateisichern1Click(Sender: TObject);
    procedure BtnSend1Click(Sender: TObject);
    procedure BtnSend2Click(Sender: TObject);
    procedure BtnSend3Click(Sender: TObject);
    procedure BtnSend4Click(Sender: TObject);
    procedure BtnSend5Click(Sender: TObject);
    procedure BtnSend6Click(Sender: TObject);
    procedure RS2321Click(Sender: TObject);
    procedure Ethernet1Click(Sender: TObject);
private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }

  end;

  //Deklarationen
  procedure BtnSend(BefehlNr: Integer; Befehl:String);
  procedure RS232Send(BefehlNr: Integer; Befehl:String);


     .....


//*************************
// RS232: Senden BefehlNr()
//*************************
procedure RS232Send(BefehlNr: Integer; Befehl:String);
begin
  ListBox1.xxxxxx //Hier ist die ListBox unbekannt
  Exit;

End; //RS232Send
Schiebe ich die Deklarationen der eigenen Prozeduren hoch in Private oder Public geht garnichts mehr ... warum ka !
Hilfe Hilfe ich weiss nicht weiter ... und Ja es fehlen auch die Grundlagen

LG Philip
[x] hier anbohren für neuen Monitor
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 21:49
Deine Prozedur ist keine Methode deiner Formklasse und somit ist das Listboxobjekt unbekannt. Entweder übergibst du die Listbox als Parameter oder du machst sie zu einer Methode deiner Formklasse.

Noch besser wäre allerdings eine ganz eigene Klasse für das Senden und verarbeiten der Daten.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
idefix2

Registriert seit: 17. Mär 2010
Ort: Wien
1.027 Beiträge
 
RAD-Studio 2009 Pro
 
#3

Re: ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 21:59
Delphi-Quellcode:
procedure RS232Send(BefehlNr: Integer; Befehl:String);
begin
  form1.ListBox1.xxxxxx //Hier ist die ListBox bekannt
  Exit;

End; //RS232Send
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 22:18
Ist aber sehr unsauber die Lösung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

Re: ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 22:49
Zitat von Luckie:
Ist aber sehr unsauber die Lösung.
Inwiefern?

Ich mache es im Quellcode auch fast immer so, und es funktioniert stets zuverlässig. Es erscheint mir als die schnellste Lösung dieses Problems. Den Formularklassen fremde Unterprogramme unterzuschieben ist zwar möglich, doch ist das etwa sauber(er)? Sind die Formklassen nicht Domäne des Editors bzw. der IDE? Und die Parameterübergabe ist mir viel zu fehleranfällig.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 23:16
Zitat von Delphi-Laie:
Zitat von Luckie:
Ist aber sehr unsauber die Lösung.
Inwiefern?

Ich mache es im Quellcode auch fast immer so, und es funktioniert stets zuverlässig. Es erscheint mir als die schnellste Lösung dieses Problems. Den Formularklassen fremde Unterprogramme unterzuschieben ist zwar möglich, doch ist das etwa sauber(er)? Sind die Formklassen nicht Domäne des Editors bzw. der IDE? Und die Parameterübergabe ist mir viel zu fehleranfällig.
Nein, das ist um EINIGES sauberer und auch die übliche und beste Lösung. Von welcher fehleranfälligen Parameterübergabe redest du da?

Es funktioniert halt NICHT zuverlässig wenn du grad eine Instanz von TForm1 hast, die NICHT über die Form1-Variable referenziert werden kann. Weil dann knallts oder es passiert nichts.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: ListBox1 unbekannt in eigener prozedur

  Alt 3. Jun 2010, 23:26
Na, dann warte mal ab, was passiert, wenn der Kunde aufeinmal ein Konsolenprogramm will. Da du den Code für die Datenverarbeitung und -haltung so wunderschön einfach mit der Oberfläche verschmolzen hast, kannst du wahrscheinlich alles noch mal schreiben. Des weiteren kann es dir passieren, dass Änderungen an der Oberfläche auch Auswirkungen auf die Datenverarbeitung haben. Ersetz einfach mal eine Listbox durch einen Listview. Viel Spaß.

Trennst du die Datenverarbeitung von der Oberfläche, kannst du zum einem später jede beliebige Oberfläche "drüberstülpen" und du kannst am Code für die Datenverarbeitung arbeiten ohne, die Oberfläche zu kennen. Stichwort Arbeitsteilung. Weitere Vorteile: Einfachheres Refactoring, Erhöhung der Wartbarkeit, einfachheres erweitern möglich, fest definierte Schnittstellen.

Das es funktioniert und, dass es eine schnell und unkomplizierte Lösung ist, bestreitet auch keiner.

Aber wegen seiner eigenen Unzulänglichkeit eine unsaubere Lösung vorzuziehen, zeugt nicht von Professionalität. Dann lernt man es und macht es richtig.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: ListBox1 unbekannt in eigener prozedur

  Alt 4. Jun 2010, 00:49
@luckie
Wieso soll er so lange warten?

Der soll einfach mal sein Formular umbenennen und schon knallt es

Ansonsten halt so versuchen
Delphi-Quellcode:
procedure RS232Send(BefehlNr: Integer; Befehl:String; ListBox : TListBox = nil );
begin
  if Assigned( ListBox ) then
    begin
      ListBox.xxxxxx //Hier ist die ListBox bekannt
    end;
  Exit;

End; //RS232Send
Der Aufruf erfolgt so (ohne Ausgabe auf die ListBox ... weil ja nicht bekannt)
RS232Send( BefehlNr, Befehl ); oder so, mit Ausgabe in der ListBox
Delphi-Quellcode:
procedure TForm1.TuWas;
  begin
    RS232Send( BefehlNr, Befehl, ListBox1 );
  end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

AW: Re: ListBox1 unbekannt in eigener prozedur

  Alt 8. Jun 2010, 05:55
Zitat von Delphi-Laie:
Zitat von Luckie:
Ist aber sehr unsauber die Lösung.
Inwiefern?

Ich mache es im Quellcode auch fast immer so, und es funktioniert stets zuverlässig. Es erscheint mir als die schnellste Lösung dieses Problems. Den Formularklassen fremde Unterprogramme unterzuschieben ist zwar möglich, doch ist das etwa sauber(er)? Sind die Formklassen nicht Domäne des Editors bzw. der IDE? Und die Parameterübergabe ist mir viel zu fehleranfällig.
Nein, das ist um EINIGES sauberer und auch die übliche und beste Lösung. Von welcher fehleranfälligen Parameterübergabe redest du da?
Parameterübergabe zwischen Unterprogrammen und den Stellen des (Haupt-)Programmes, die sie aufrufen. Muß - möglichst vollständig - übereinstimmen, worum man sich kümmern muß -> Fehlerpotential, und Morphy schlägt bekanntlich meistens zu.

Was die Umbenennung des Formulares anbetrifft: Sicher hagelt es dann Fehlermeldungen beim Compilieren, doch wozu gibt es die Such- und Ersetzfunktion?
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#10

AW: Re: ListBox1 unbekannt in eigener prozedur

  Alt 8. Jun 2010, 06:31
Parameterübergabe zwischen Unterprogrammen und den Stellen des (Haupt-)Programmes, die sie aufrufen. Muß - möglichst vollständig - übereinstimmen, worum man sich kümmern muß -> Fehlerpotential, und Morphy schlägt bekanntlich meistens zu.
Aber nur, wenn Du den Quelltext schreibst. Nachher nichtmehr.

Was die Umbenennung des Formulares anbetrifft: Sicher hagelt es dann Fehlermeldungen beim Compilieren, doch wozu gibt es die Such- und Ersetzfunktion?
Das kannste Dir dann bei einer Umbenennung zum Beispiel sparen.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:21 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