AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi subroutine laeuft nur auf dem entwickler-pc

subroutine laeuft nur auf dem entwickler-pc

Ein Thema von y5kc · begonnen am 26. Jan 2014 · letzter Beitrag vom 27. Jan 2014
Antwort Antwort
y5kc

Registriert seit: 4. Mai 2012
2 Beiträge
 
#1

subroutine laeuft nur auf dem entwickler-pc

  Alt 26. Jan 2014, 16:30
ein herzliches hallo an das forum!
ich bin neu hier - dies ist mein erster beitrag.
bin aber kein programmer-newbie ...

zuerst -natuerlich- vielen dank fuer die hilfe und die anregungen die ich seit jahren als anonymer besucher dieser/eurer seite bekommen habe!

aber dieses mal stehe ich richtig auf dem schlauch und hoffe auf eure einfaelle --> alles googlen hat bis jetzt nichts erbracht:
inmitten einer etwas umfangreicheren routine tue ich das:
...
Delphi-Quellcode:
  if (CompareDate(dp1.Date, date) < 0) then
  begin
    if led1.Text = 'then
    begin
      led1.ReadOnly := false;
      led1.Color := clWindow;
    end
    else
    begin
      led1.ReadOnly := true;
      led1.Color := clInfoBk;
    end;

   ... usw ....

    if led*n.Text = 'then ....
 
 end;
...
ich pruefe also, ob:
1. das ausgewaehlte datum (vcl-datetimepicker) aelter ist als heute, und
2. bestimmte felder (vcl-labeledit) leer sind (daten wurden vorher aus einer db geholt)
wenn beides zutrifft, sollen dieses leeren felder zum daten-eingeben wieder enabled werden.
wenn nicht, bleiben sie disabled und gelb.

und das waere jetzt das grosse wochenend-raetsel an das forum:
nur dieses kleine stueck code innerhalb der ganzen routine funktioniert lediglich(!) auf meinem entwickler-pc --> xp-sp3, delphi-xe2sp4, kein besonderes setup.
auf allen anderen test-pc mit xp-sp3, w7(32 & 64), s2003(32) und s2008r2(64) bleiben die entsprechenden felder immer(!) "disabled" und "clinfobk".
die gesamte software ansich laeuft fehler- & problemlos auf den genannten systemen --> nur halt diese kleine sub-sub-routine streikt.
hab's explizit fuer 32 compiliert, und auf den 64er-pc auch noch einmal per hand in den xp-modus gezwungen.

fuer jede noch so kleine idee, wo ich ansetzen muss/koennte, waere ich euch sehr dankbar!

ich wuensche noch einen schoenen sonntag an alle delphi-coder mit jagdinstinct ...
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#2

AW: subroutine laeuft nur auf dem entwickler-pc

  Alt 26. Jan 2014, 16:48
Um mal das Dümmste auszuschließen: Ist auf beiden Rechner das gleiche Datum eingestellt?
Vielleicht solltest du dir zur Überprüfung mal date ausgeben lassen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: subroutine laeuft nur auf dem entwickler-pc

  Alt 26. Jan 2014, 17:43
Willkommen,

war dieses TDateTimePicker.Date nicht in einigen VCL-Versionen "defekt" und enthält auch die Uhrzeit?
Prüf mal, ob bei dir im .Date wirklich nur das Datum drin steckt, ansonsten ist der Vegleich von der Tageszeit abhängig.

Notfall einfach nochmal ein DateOf oder Trunc drumrum machen.


Zitat:
Delphi-Quellcode:
    if led1.Text = 'then
    begin
      led1.ReadOnly := false;
      led1.Color := clWindow;
    end
    else
    begin
      led1.ReadOnly := true;
      led1.Color := clInfoBk;
    end;
Schade, daß du kein Anfänger mehr bist, sonst hätte ich noch ein paar weitere Frage zum Code gestellt.

Wieso steckt dieser Code dann nicht in einer Procedur, wenn er doch "identich" mehrfach vorkommt?

Oder, warum kommt man nicht wenigstens auf die Idee, ihn zusammenzufassen, wenn man ihn dennoch mehrfach schreiben will?
Delphi-Quellcode:
    // 20%
    led1.ReadOnly := led1.Text <> '';
    led1.Color := IfThen(led1.Text = '', clWindow, clInfoBk);

    // oder zumindestens 50%
    led1.ReadOnly := led1.Text <> '';
    if led1.ReadOnly then
      led1.Color := clInfoBk
    else
      led1.Color := clWindow;
PPS:
Ich würde auch eher die versändlicheren Konstanten empfehlen, also = LessThanValue oder < EqualsValue , anstatt des < 0 .
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Jan 2014 um 17:54 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

AW: subroutine laeuft nur auf dem entwickler-pc

  Alt 26. Jan 2014, 20:46
Die Rechtschreibregeln gelten für alle Nutzer!
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: subroutine laeuft nur auf dem entwickler-pc

  Alt 26. Jan 2014, 22:18
Die Rechtschreibregeln gelten für alle Nutzer!
Und ich dachte immer, wer auf Rechtschreibfehler aufmerksam macht bzw. diese moniert, hat sonst nichts zu sagen.

Zum Code:
Theoretisch kann die Datenbank auch ' ' anstatt '' enthalten, sodaß der Vergleich auf '' eben fehlschlägt.

Du hast fürchterlich viel Redundanz in deinem Code, also Codestellen, die das gleiche machen, nur mit anderen Parametern. Das ist grausam und fehleranfällig (wie man sieht). Kürze das zusammen.

Delphi-Quellcode:
Procedure AdjustLedText (ledLabel : TLabel)
Begin
  if ledLabel.Text = 'then begin
    ledLabel.ReadOnly := false;
    ledLabel.Color := clWindow;
  end
  else begin
    ledLabel.ReadOnly := true;
    ledLabel.Color := clInfoBk;
  end
end;
Aufruf dann:
Delphi-Quellcode:
AdjustLedText(led1);
AdjustLedText(led2);
...
AdjustLedText(ledn);
Und wenn Du ganz pfiffig bist, packst Du alle 'ledx'-Labgel in ein Array und ...
Delphi-Quellcode:
if DateIsInThePast() then
  for led in ledLabel do
    AdjustLedText(led);
Ach und bei diesem 'DateIsInThePast()' weiß man ja, was es machen soll (geht aus dem Namen hervor).

Durch Refactoring eliminierst Du Fehler im Code, der sich eigentlich identisch verhalten soll. In deinem Fall wäre das ja so: Der Fehler kann also *nur* in den Daten liegen (Datum, ' ' statt '' etc.)

Übrigens: Irgendwie ist jeder Newbie. Irgendwie.
  Mit Zitat antworten Zitat
y5kc

Registriert seit: 4. Mai 2012
2 Beiträge
 
#6

AW: subroutine laeuft nur auf dem entwickler-pc

  Alt 27. Jan 2014, 06:49
hallo an alle, und vielen dank fuer eure ideen & antworten!

@ hathor
es tut mir leid. die deutsche rechtschreibung war noch nie meine staerke, weil nicht meine muttersprache.
werde mir aber heute gleich ein keyboard mit deutschem layout (= ein zeicheneingabegeraet mit deutscher tastaturbelegung) und integrierter auto-korrektur kaufen ...

@ bug
der ist richtig klasse
aber: geprueft --> negative ...

@ himitsu & furtbichler
vielen dank fuer die code-tips!
code-optimierung ist aber immer erst mein letzter schritt vor den finalen release-tests --> hat mich das leben schmerzvoll gelehrt ...
alles andere habe ich auch schon geprueft/getestet, bevor ich mich an euch/das forum gewandt hatte.
"Theoretisch kann die Datenbank auch ' ' anstatt '' enthalten, sodaß der Vergleich auf '' eben fehlschlägt."
das auch --> geprueft --> negative. wuerde aber auch keinen sinn machen, weil: see next:

ich fasse das eigentliche problem noch mal kurz zusammen.
alle (test-)maschinen (xp-sp3, w7(32 & 64), s2003(32) und s2008r2(64) ) greifen auf die gleiche db(=daten) zu und laufen auf dem gleichen datetimestamp wie mein delphi-pc.
und alles laeuft ueberall ohne problem genauso wie geplant und gecoded.
nur eben diese kleine unterroutine, die lediglich ein paar edit-felder enablen soll, funktioniert nur(!!!) auf meinem delphi-pc.
und das ist doch wirklich komisch, oder?
  Mit Zitat antworten Zitat
Antwort Antwort

 
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 07:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz