AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge exe Datei verhält sich anders als in der IDE-Umgebung
Thema durchsuchen
Ansicht
Themen-Optionen

exe Datei verhält sich anders als in der IDE-Umgebung

Ein Thema von Eisenmann · begonnen am 29. Nov 2021 · letzter Beitrag vom 30. Nov 2021
Antwort Antwort
Eisenmann

Registriert seit: 24. Dez 2016
Ort: Saarland, 66663 Merzig
7 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 13:21
Hallo,

erst mal vielen Dank für die schnellen Antworten.
Jetzt kann ich da mal einiges ausprobieren und melde mich dann wieder.

Grüße aus dem Saarland,
der Eisenmann
  Mit Zitat antworten Zitat
JWBokx

Registriert seit: 8. Jul 2021
2 Beiträge
 
#2

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 13:56
Etwa lange her Deutsch zu schreiben....

Code:
    while Objekte.Count>0 do begin
      OB:=Objekte[0];
      OB.loeschen;
      Objekte.Delete(0);
    end;
Welche classtype ist Objecte?
Der liste loeschen mach ich immer vom (count-1) bis 0.
Der Delete muss dan nicht jeder mal indexen scheiben...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 14:34
joar

* "geloescht" wird niemals verwendet
* "weiter" wird oft garnicht gesetzt/zugewiesen (warum liest niemand das, was der Compiler sagt?)
* * siehe Objekte.Count=0 oder nicht mbYes

* Clear ist etwas nutzlos, weil dort die Liste immer schon leer ist (bei Dem wie du es da oben machst)
* das letzte ShowMessage: Result sind weiter sind immer gleich ... wozu dann Beides anzeigen?

* ...

Delphi-Quellcode:
begin
  if ohneWarnmeldung then begin
    Result := True;
  end else begin
    Result := (Objekte.Count=0) or (MessageDlg('Wollen Sie die vorhandenen '+Objekte.Count.ToString+' Objekte überschreiben',mtConfirmation,[mbYes,mbNo],0)=mrYes);
  end;
  {
  Result := ohneWarnmeldung or (Objekte.Count=0) or (MessageDlg('Wollen Sie die vorhandenen '+Objekte.Count.ToString+' Objekte überschreiben',mtConfirmation,[mbYes,mbNo],0)=mrYes);
  }

  if Result then begin
    while Objekte.Count>0 do begin
      OB := Objekte[0];
      OB.loeschen;
      Objekte.Delete(0);
    end;
    {
    while Objekte.Count>0 do begin
      //OB := Objekte.Extract(0);  // Extract = Auslesen+Delete
      //OB.loeschen;
      Objekte.Extract(0).loeschen;
    end;
    }

    {
    for var i := Objekte.Count-1 downto 0 do
      Objekte[i].loeschen;
    Objekte.Clear;
    }

    {
    // Warum "loeschen" und nicht Free/Destroy?
    // Warum keine ObjectList mit Owns=True?
    // Und schon reicht ein einziger Befehl.
    Objekte.Clear;
    }

  end;
end;
Genau das, was dein Code von da oben macht, nur ohne die "nichtinitialisierten Variablen" (vor dem zwei IF noch ein weiter:=True; eingefügt) und die IFs auch direkt zusammengefasst.
Delphi-Quellcode:
begin
  if not ohneWarnmeldung and (Objekte.Count>0) and (MessageDlg('Wollen Sie die vorhandenen '+Objekte.Count.ToString+' Objekte überschreiben?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then
    Exit(False);
  while Objekte.Count> do
    Objekte.Extract(0).loeschen;
  Result := True;
end;
oder
Delphi-Quellcode:
begin
  if not ohneWarnmeldung and (Objekte.Count>0) and (MessageDlg('Wollen Sie die vorhandenen '+Objekte.Count.ToString+' Objekte überschreiben?',mtConfirmation,[mbYes,mbNo],0)=mrYes) then
    Exit(False);
  for var i := 0 to Objekte.Count-1 do
    Objekte[i].loeschen;
  Objekte.Clear; // ob noch ein Try-Finally oder die Variante mit Extract ... kommt drauf an, wie man die Fehlerbehandlung braucht, falls es im "loeschen" knallt
  Result := True;
end;
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 1. Dez 2021 um 08:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.361 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 14:51
Welcher Typ ist Objekte?
Was macht OB.Loeschen?

Wenn Objekte eine TObjectList ist, dann wird es wohl weiter knallen, wenn du AOwnsObjects im Create auf True gelassen hast.
OB.Loeschen wird hoffentlich nicht das Objekt mit einer eigenen Methode freigeben...

Frank
Frank Reim
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.076 Beiträge
 
Delphi 12 Athens
 
#5

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 14:58
Ich würde als erstes einmal FastMM4 mit FullDebugMode einbinden und schauen, ob das nicht schon etwas ausspuckt. Wenn da ein Objekt doppelt freigegeben wird oder ähnliches, würde das dort anschlagen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: exe Datei verhält sich anders als in der IDE-Umgebung

  Alt 30. Nov 2021, 21:41
Ich hatte mal den Fall von unerklärlichen Fehlern beim Arbeiten mit einer TObjecrList (einer generischen). Den Fehler habe ich kaum gefunden, Schuld war ein fehlendes inherited im Konstruktor der TObjectList. Aber auf jeden Fall mal meine Vorredner beherzigen. Der Hund könnte auch beim Objekt selber begraben sein…

Viel Erfolg.
Michael Kübler
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:09 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-2025 by Thomas Breitkreuz