Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Geheimnisvolle TMemo (https://www.delphipraxis.net/262-geheimnisvolle-tmemo.html)

Gast 25. Jun 2002 22:33


Geheimnisvolle TMemo
 
Hallo, 8)

ich habe ein sehr interessantes Problem.

Auf einem Formular habe ich ein TPageControl mit mehrere Seiten (tabShet).

Dieses PageControl wird immer wider um weitere Seiten erweitert...

Auf jeder Seite liegt immer NUR ein TMemo Komponente mit Inhalt (Verschiedene Texte)

Ab und zu nach der Compilierung habe ich ein merkwürdiges Effekt: :shock:

Auf manchen Seiten beinhalten die Memos kein Inhalt!!!


Erst nach mehrmaligen Compilieren (z.B. Menü Projekt: „Alle Projekte compilieren“ und dann „Alle Projekte erzeugen“ usw... bekomme ich eine EXE mit der gewünschten Memo Inhalten.

Das ist für uns sehr gefährliche Effekt..., da es ist schon passiert, dass man weiter na die Kunden ein fehlerhaften Update ausgeliefert hat!

:?: Frage:

1.) Woran das liegen kann?

2.) Wie könnte man so was eventuel (fals die Frage Nr.1 ohne Antwort bleibt) automatisch überwachen?


Gruß

Paul Jr.

Daniel 25. Jun 2002 22:41

Hallo PaulJr,

das ist zwar nichts, um den Fehler zu beheben, aber wenigstens um ihn zu erkennen: Während der Initialisierung Deiner Anwendung rufst Du eine Prozedur auf, welche jedes Memo prüft, ob es Text enthält (Memo.Lines.Count > 0). Wenn ich Dich richtig verstanden habe, dann haben Deine Memos entweder gar keinen Text (Memo.Lines.Count = 0) oder aber den vollständigen Text (Memo.Lines.Count > 0). Stellt Deine Prozedur also fest, dass mindestens ein Memoo nicht den geforderten Inhalt hat, dann kannst Du mit ShowMessage('...') irgendetwas ausgeben.

Die Prozedur kann die Anzahl der Seiten des Controls abfragen (.PageCount) und dann nach und nach alle Seiten durchgehen und über die Eigenschaft "Controls" einer jeden Seite das darauf befindliche Memo ausmachen.

Wie gesagt, damit ist der Fehler zwar nicht behoben, aber die Gefahr, ein fehlerhaftes Release an die Kunden zu liefern, sinkt deutlich, da der Fehler vom Programm schon beim Start gemeldet wird.


Grüße,
Daniel

danielA 25. Jun 2002 22:56

Hallo Paul,

zu 1.) leider keine Idee,
Ist der Text fest einprogrammiert oder wird er irgendwo ausgelesen ???

zu 2.)

Code:

procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
  for i:=0 to ComponentCount -1 do
  begin
    if (Components[i] is TMemo) and (Trim(TMemo(Components[i]).Lines.Text)='') then
       ShowMessage('Memo '+TMemo(Components[i]).Name+' enthält keinen Text !!!');
  end;
end;
Diese Funktion durchläuft alle Komponenten in deinem Projekt.
Ist die aktuelle Komponente vom Typ TMemo, so wird untersucht ob sie Text oder nur Leerzeichen enthält. Ist kein Text oder sind nur Leerzeichen enthalten, so wird eine Meldung ausgegeben.

Ich hoffe das hilft dir ein wenig weiter

Gruß Daniel

Gast 25. Jun 2002 23:02

Hallo Daniel,

Zitat:
(...)
Während der Initialisierung Deiner Anwendung rufst Du eine Prozedur auf, welche jedes Memo prüft, ob es Text enthält (Memo.Lines.Count > 0). Wenn ich Dich richtig verstanden habe, dann haben Deine Memos entweder gar keinen Text
(...)

Ja manche Memos erscheinen manchmal ohne Text.

Daniel, ich weiß was Du meinst... Das natürlich wäre eine Sache für unserer Support und wäre Zwar eine denkbare Lösung... die leider nur eine hilfslose Reaktion auf der Fehler wäre

Ich darf solche EXE nicht ausliefern... nicht mal an Support... und jedes Mal die Anwendung zu starten... ist echt sehr Aufwendig... und Zeitraubend... Du weiß wie es manchmal stressig in Software Firma ist... man muss immer an irgendwas denken...

Vielleicht finden wir hier eine andere Lösung...

Danke

Paul Jr.

Luckie 25. Jun 2002 23:03

Wie kommt denn nun der Text in die Memos? Eventuell kommt man da weiter.

Gast 25. Jun 2002 23:05

Hallo DanielA,

es handelt sich genau genomme um festen Text (SQL-SCripts) die dort integriert sind...

Danke für Deine Funktion, aber mit änlichen Konstrukten arbeite ich dort gerade...

Mein Problem entsteht irgendwie bei Compilierung...

Danke

Gruß

Paul Jr.

Gast 25. Jun 2002 23:06

Hallo Luckie,

Text kopiere ich ganz einfach (von Hand) in TMemo..., danach wird compiliert...

Danke

Gruß

Paul Jr.

Daniel 25. Jun 2002 23:08

Hallo PaulJr,

... hast ja recht - brilliant war meine Idee keineswegs.
Du gibst eine Anwendung weiter ohne sie wenigstens einmal gestartet zu haben? Du wirst Deine Gründe haben - aber damit hatte ich nicht gerechnet :roteyes:

Du schreibst also zur Designzeit etwas in die Memos und zur Laufzeit ist es dann nicht mehr da. Kannst Du vielleicht mit Ressourcen arbeiten? Die werden ja recht zuverlässig eingebunden...


Grüße,
Daniel

Luckie 25. Jun 2002 23:11

Wenn er es per Hand in den StringListen-Editor einträgt, ist es ja auch nichts anderes als eine Resource.
Aber gibt es denn was auffälliges wenn du mit F7 durchgehst? Ist der Text eventuell zu groß? Was für ein OS?

Gast 25. Jun 2002 23:24

Hallo Luckie,

Text ist gewiß nicht zu groß (es sind nur bis jetzt 3 kleine Momos)

Hallo Daniel,

das mit Resourcen einbinden wäre vielleicht die Lösung... nun mit Resourcen Einbindung habe ich noch nicht gearbeitet...darum weiß ich überhaupt nicht wie ich das machen sollte und was ich dazu brauchen würde... (wäre vielleicht eine interessante Idee für ein sehr kleines Tutorial:

Resurce erstellen und Einbidnen...

Vielleicht hat jemand etwas Zeit um so was zu restellen ...

Gruß

Paul Jr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 Uhr.
Seite 1 von 3  1 23      

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