Autor Beitrag
Smartie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Fr 24.06.05 08:14 
Servus!

Ok, so ist das, man denkt, man sei in der Abschlußphase eines Projektes und dann...

Ich habe folgendes Problem:

Mein Programm funktioniert zwar, aber ich habe eben eine Form mit drin.
Tja, und jetzt heißt es "schön was Sie da gemacht haben, aber schmeißen sie die Form raus".

Ok, ich denke, es könnte mit daran liegen, daß ich nicht wirklich OOT denke.
Ich muß also die Form rauswerfen, ich muß also auch Alles, was in der Form steht, rauswerfen. Das dumem ist, da steht eine ganze Menge und Jasocul erinnert sich sicherlich an meine Problematik, einige anweisungen an die Form binden zu müssen, da diese sonst nicht funktioniert hat.

Bisher habe ich die Form als meine Basis benutzt, ein Fundament, auf dem ich alles aufbaue.
Ok, und jetzt soll dieses Fundament weg, undich soll was anderes hinmodeln.

Nur was und wie?

Ich bitte um dringende Hilfe dabei.

Hier ein par Beispielevon den Dingen, die bisher auf Form1 basieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.FormCreate(Sender: TObject);
begin
    RS232Activate := False; // Für die COM-Verbindung erforderlich
    Form1.RadioButton1.Checked := true;
    Schreib_Bool := false;
    Warte_Bool0 := false;
    Warte_Bool1 := false;
    Hilf_Bool1 := false;
    Warte_Bool2 := false;
    Schreib_Check_Bool0 := false;
    Schreib_Check_Bool1 := false;
    Warn_Bool01 := false;

end;


und natürlöich auch die ganze Com-Port-Geschichte:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
{-----------------------------------------------------------------------------
  Procedure : COM-Port
  Version   : Alfa

  Resultat  : Auslesen der Daten vom COM
-----------------------------------------------------------------------------}

procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  I : Word;
  C : Char;
  S : String;

begin
  RS232Activate  := True;   // Erst JETZT auf true gesetzt
  Timer1.enabled := False; // Neustart des Timers, sehr wichtig!!
  Timer1.enabled := True;
  S := '';

  for I := 1 to Count do begin  // statt 1 die 0
    C := ApdComPort1.GetChar;
    case C of
      #0..#31 : S := S + C ;    // zur Verdeutlichung, ja auch die!!!
      else S := S + C;
    end;
  end;
  tempBuffer := tempBuffer + S;   //Erst temporär
  if length(tempBuffer) >= StrtoInt(String_Datenmenge) then
  begin
      Warte_Bool1 := true;
  end;

    // Datenabfrage zwecks Versenden der Richtigen Daten bzw. Befehle
  if tempBuffer = (#6+#48then
  begin
    if (Schreib_Bool = false) and (Schreib_Check_Bool0 = false) then
    begin
       ApdComPort1.OutPut := #02 ; // Zum Lesen der Daten, temp Buffer soll so bleiben   // 1
    end

    else if Schreib_Check_Bool0 = true then    // 3
    begin
       Schreib_Check_Bool1 := true;   // Ok, daten sind gut versednet Worden
       tempBuffer := '';  // Entleeren um weitere Befehle nicht zu verfälschen
    end

    else if Schreib_Bool = true then            // 2
    begin
       ApdComPort1.OutPut := #02 + Sende_String;
       Schreib_Check_Bool0 := true;   //Hilfsbool um in die nächste Schleife zu kommen, sobald Daten vesendet.
       Schreib_Bool := false;
       tempBuffer := '';  // Entleeren um weitere Befehle nicht zu verfälschen
    end;

  end
  else if copy(tempBuffer,11) = (#21then
  begin
    balluff_fehler;
    ERROR_Handling;
  end;

  //DatenString wird erst später deklariert

end;




Ihr seht, da ist einiges mit drin. Und es läuft auch nur auf meinem Fundament,dem Form, das bisher meine stütze war. Es tut fast weh sie zu entfernen, sie war das beständigste von anfang an und ist gewachsne. Wie die Erde eines Blumengartens, in dem nun die Blumen bleiben sollen, aber die Erde weg muß.

Ok, ich werde sentimental, Verziehung.

Herzlichen Dank und lieben Gruß

Smartie
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Fr 24.06.05 09:25 
sollte nicht allzu schwer sein
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.FormCreate(Sender: TObject);
begin
    RS232Activate := False; // Für die COM-Verbindung erforderlich
    Form1.RadioButton1.Checked := true;
    Schreib_Bool := false;
    Warte_Bool0 := false;
    Warte_Bool1 := false;
    Hilf_Bool1 := false;
    Warte_Bool2 := false;
    Schreib_Check_Bool0 := false;
    Schreib_Check_Bool1 := false;
    Warn_Bool01 := false;

end;

wird dann halt zu
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure initvalues;
begin
    RS232Activate := False; // Für die COM-Verbindung erforderlich
    Form1.RadioButton1.Checked := true;
    Schreib_Bool := false;
    Warte_Bool0 := false;
    Warte_Bool1 := false;
    Hilf_Bool1 := false;
    Warte_Bool2 := false;
    Schreib_Check_Bool0 := false;
    Schreib_Check_Bool1 := false;
    Warn_Bool01 := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  initValues;
end;


so kannst du deinen code in eine unit oder ein consolenprog stecken, ohne auf die form angewiesen zu sein

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 24.06.05 09:25 
Sentimentaler Kerl :wink:

Das Prinzip ist folgendes:
Dum musst alle Komponenten zur Laufzeit erzeugen. Dazu ist eine Form nicht erforderlich.
Folgende Probleme können sich ergeben:
- Alle Einstellungen die du im OI gemacht hast, musst du nun manuell im Source machen.
- Sollte es Ereignisse/Methoden geben, die du im OI gemacht hast, musst du diese auch zur Laufzeit einbinden.
- Deine Variablen musst du dann in der Unit deklarieren und nicht mehr in der Form-Komponente.

Warum darfst du die Form eigentlich nicht haben? Soll das ein "nicht sichtbares" Programm sein? Oder eine Konsolen-Anwendung werden?
Notfalls bastellst du noch ein Memo auf die Form und "verkaufst" das als Protokoll, damit Schnittstellenfehler besser und schneller analysiert werden können. :wink:
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Fr 24.06.05 09:58 
Es geht darum, daß ich einen wichtigen Teil gemacht habe, dieser jedoch eingebunden wird in ein größeres Projektchen.

tja, und dan ist meine Form fehl am Platz.


Danke, ich werds versuchen, und Euch noch ein paar Fragen zu stellen wensn an der Zeit ist.

Lieben Gruß

Smartie
MrFox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 208

WIN 2000 Professional, Ubuntu 5.10
D3 Prof, D7 Pers, D2005 Pers, Java (Eclipse)
BeitragVerfasst: So 26.06.05 18:59 
Kannst du das Form nicht einfach verstecken?

_________________
Das Leben auf der Erde mag zwar teuer sein, aber eine jährliche Rundreise um die Sonne ist gratis mit dabei.
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mi 29.06.05 08:08 
Verstecken hört sich sehr sehr gut an *g*

Quasi, ich nutze das Form als Classe die sie ist, in welcher ich alles eingebettet habe, aber sie wird nicht gezeigt.

Klingt sehr sehr gut, nur... wie geht das?

Und wie kann mein Kollege dann meien Arbeit bei sich mit einbetten?

Herzlichst liebe Grüße und Danke


Smartie
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 29.06.05 08:53 
Ich bin mir nicht ganz sicher, aber schau dir mal an, ob du statt Form1.Create auch Form1.CreateNew verwenden kannst.
Außerdem gibt es noch die Möglichkeit, bei der Form Visible := false zu setzen.