Listen testen...

Für allgemeine Fragen zur Programmierung mit PureBasic.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Listen testen...

Beitrag von GPI »

Ohne mehr code ist es schwer zu sagen, was bei dir schief läuft.
So spontan würde ich schätzen, das du Pointer benutzt und die ungültig werden, weil du Elemente freigibst oder ähnliches.

Ich hab zumindest bei meinen Programmen nie Probleme mit Listen festgestellt.

Und wenn mein gerade laufendes Programm mit Debugger abschmiert und sich beendet, bemerkt es die IDE absolut zuverlässig. Ab und zu braucht sie etwas, aber bemerken tut sie es immer.

Was genau meinst du mit "abschmiert"? Endlosschleife?

Edit: unter den COmpileroptions mal den Peruifer (oder so ähnlich) eingestellt? Der kann auch öfters was finden.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
stevie1401
Beiträge: 614
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Listen testen...

Beitrag von stevie1401 »

Die Antwort ist recht einfach. Benutze ich für das selbe Programm keine Listen, sondern dimme meine Variablen, dann ist das vielleicht etwas weniger elegant, aber das Programm stürzt nicht ab.
Deshalb bin ich erst darauf gekommen, dass es vielleicht an den Listen liegen könnten.
Und ja, ich weiß, dass obiger Code nicht gut ist. Darum geht es mir auch gerade nicht.
Ich möchte nur den Grund herausfinden, warum die Purebasic-IDE nicht merkt, dass ein in ihr laufendes Programm sich ohne Meldung verabschiedet hat.
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6838
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Listen testen...

Beitrag von STARGÅTE »

stevie1401 hat geschrieben: 23.07.2021 08:34 Die Antwort ist recht einfach. Benutze ich für das selbe Programm keine Listen, sondern dimme meine Variablen, dann ist das vielleicht etwas weniger elegant, aber das Programm stürzt nicht ab.
Deshalb bin ich erst darauf gekommen, dass es vielleicht an den Listen liegen könnten.
Und ja, ich weiß, dass obiger Code nicht gut ist. Darum geht es mir auch gerade nicht.
Ich möchte nur den Grund herausfinden, warum die Purebasic-IDE nicht merkt, dass ein in ihr laufendes Programm sich ohne Meldung verabschiedet hat.
Was meinst du mit "sondern dimme meine Variablen"?
Und wie schaffst du es ein ganzes Programm von Listen zu Variablen-Only umzuschreiben? Das kann ja dann nicht sehr groß sein.
Kannst du nicht einfach den betreffenden Code hier posten und uns endlich sagen was du mit "laufendes Programm sich ohne Meldung verabschiedet hat" meinst? Ich meine GPI und ich haben danach ja nun schon gefragt. Wenn dein Programm "aus versehen" mit End beendet wird, dann juckt das die PB IDE natürlich nicht.
Ich habe jedenfalls keine Lust mehr ins leere zu stochern, da du uns ja anscheint keine Infos geben möchtest.
PB 5.73 ― Win 10, 20H2 ― Ryzen 9 3900X ― Radeon RX 5600 XT ITX ― Vivaldi 4.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
#NULL
Beiträge: 2227
Registriert: 20.04.2006 09:50

Re: Listen testen...

Beitrag von #NULL »

Hast du eigentlich den Debugger aktiviert? (man weiß ja nie)
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
helpy
Beiträge: 630
Registriert: 29.08.2004 13:29

Re: Listen testen...

Beitrag von helpy »

... und welche Purebasic Version verwendest Du?
... auf welchen Betriebssystem wurde getestet?
Windows 10
PB Last Final / (Sometimes testing Beta versions)
stevie1401
Beiträge: 614
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Listen testen...

Beitrag von stevie1401 »

Mehr als meinen geposteten Code verwende ich nicht in den Listen. Ich verwende zudem auch keine Pointer.
Mit Dimmen meine ich:
Dim irgendwas.s(1000)
irgendwas(12)="Meier"
irgendwas(23)="Schulze"

anstatt
Newlist irgendwas.s()
addelemement(irgendwas())
irgendwas()="Meier"
addelement(element())
irgendwas()="Schulze"

Ich verwende PB 5.73 x64 Windows und Linux.
Das von der IDE aufgerufene Programm beendet sich ohne jede Fehlermeldung. Die Anzeige der IDE ist so, als würde das Programm noch laufen.

Ich weiss nicht, ob es an den Listen liegt, deshalb meine Frage wie oder ob man mit Listen diese Fehler verursachen kann.
Dimme ich Variablen, tritt der Fehler nicht auf.
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1
Benutzeravatar
helpy
Beiträge: 630
Registriert: 29.08.2004 13:29

Re: Listen testen...

Beitrag von helpy »

stevie1401 hat geschrieben: 23.07.2021 20:14Das von der IDE aufgerufene Programm beendet sich ohne jede Fehlermeldung. Die Anzeige der IDE ist so, als würde das Programm noch laufen.
D.h.
Im Log-Fenster (unterer Rand der IDE) wird "[Uhrzeit] Executable started." angezeigt ... und dann nichts mehr?
Wenn das so ist, dann könnte das auf eine Endlosschleife hindeuten ;-)
Woher weißt Du dann, dass das Programm beendet wurde?

Dein Beispiel-Code ist alleine nicht lauffähig.
Könntest Du Deinen Programm-Code so reduzieren, dass dieser noch lauffähig ist und derselbe Fehler auftritt.
Dann könnten andere User das testen!
So können wir nur raten ... aber das ist eigentlich nicht sehr sinnvoll, denn der Fehler könnte sonstwo liegen.
Zuletzt geändert von helpy am 23.07.2021 22:04, insgesamt 1-mal geändert.
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Benutzeravatar
mk-soft
Beiträge: 3322
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Listen testen...

Beitrag von mk-soft »

Setze mal ein paar Debug ausgaben...
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.7x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace
Benutzeravatar
helpy
Beiträge: 630
Registriert: 29.08.2004 13:29

Re: Listen testen...

Beitrag von helpy »

Frage zu Deinem Code:

Code: Alles auswählen

Procedure ElementLoeschen(Name.s)
  ForEach Listenelement()
    If Listenelement()\Name=Name
      DeleteElement((Listenelemen())
      Break
    EndIf
  Next
EndProcedure

ForEach Listenelement()
  If listenelement()\Name="Meier"
    ElementLoeschen("Meier")
    Break  
  EndIf
Next
In Deinem Code ist ein Schreibfehler:

Code: Alles auswählen

DeleteElement((Listenelemen())
Bei "Listenelemen()" fehlt das "t" und eine Klammer ist auch zu viel.
Wenn Du EnableExplicit verwendest, dann müsste der Compiler eigentlich eine Fehlermeldung ausgeben.

Deklarierst Du in Deinem Programm die Variablen vor der Verwendung und verwendest Du EnableExplicit?
Das würden dir sicher viele in diesem Forum empfehlen!
Windows 10
PB Last Final / (Sometimes testing Beta versions)
stevie1401
Beiträge: 614
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: Listen testen...

Beitrag von stevie1401 »

Das war jetzt auf die Schnelle hier reingeschrieben.
Ich habe schon alles Mögliche und Unmögliche debuggt. Alles ok.
Wie ich merke, dass das Programm beendet ist? Weil es beendet ist. Die Konsole, in der es läuft ist weg und es ist auch nicht mehr im Task.
Die IDE bringt keine Ausgabe, weil sie nicht bemerkt, dass das Programm beendet ist.
Und ja, ich verwende EnableExplicit.
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1
Antworten