Variable leer ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Variable leer ?

Beitrag von marcelx »

Hallo,

ich habe ein seltsame Effekt:

Mein Programm ist ca. 3000 Zeilen lang.
Und hat bis jetzt gut funktioniert.
Ich habe mein Code mit einige Funktion erweitert. Seit dem habe ich ein komische Effekt:
An eine Stelle, welche vor die Änderungen ok war, ist ein Variable leer.

Code: Alles auswählen

Procedure test(msg.s)
   debug "MSG: "+msg
   ...
EndProcedure

NewList Data.s()
...
ForEach Data()
  test(Data())
Next
Ich kann mein Programm mit gleiche Randbedingungen starten und diese Effekt tritt nicht immer auf und nicht immer an der gleiche Stelle der Aufruf.

Hat jemand eine Idee was es sein könnt

Danke schon mal
MarcelX
Zuletzt geändert von marcelx am 05.10.2013 11:04, insgesamt 1-mal geändert.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Variable leer ?

Beitrag von Kiffi »

einige Fragen vorab:

* EnableExplicit eingeschaltet?
* Benutzt Du Thread?
* PB4.61?

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Variable leer ?

Beitrag von marcelx »

Ja
Win-10, PB 5.31 (Windows - x86)
Schranz0r
Beiträge: 22
Registriert: 11.09.2013 19:09

Re: Variable leer ?

Beitrag von Schranz0r »

Kiffi hat geschrieben:einige Fragen vorab:

* EnableExplicit eingeschaltet?
* Benutzt Du Thread?
* PB4.61?

Grüße ... Kiffi

Kiffi frag dich sowas und du antwortest mit -> JA?

https://www.youtube.com/watch?v=YAjAyel3-9M

Ne, jetzt mal ernst, Explicit ist an?
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Re: Variable leer ?

Beitrag von dysti »

Da wird immer nur ein Codebeispiel eingebracht, weil man der Meinung ist, nur dieser Teil wäre die Ursache,
Meine Erfahrung hat aber gezeigt, daß der Fehler überwiegend an anderer Stelle zu finden ist.
Sei es die Zuweisung von globalen und privaten Variablen oder die Übergabe solcher.
Kurzum: Der Fehler liegt sicherlich nicht in der Schleife.
Um helfen zu können, ist schon ein Vergleich von funktionierendem und/oder defekten Code erforderlich
und nicht nur eine kleiner Codeabschnitt.
Dann würden auch nicht die obigen Nachfragen auftauchen und man selber hätte dann auch schnellere Hilfe.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Variable leer ?

Beitrag von marcelx »

* EnableExplicit eingeschaltet?
* Benutzt Du Thread?
* PB4.61?
Die Fragen waren richtig, weil den Effekt passiert in ein Thread.

Was ich nicht verstehe ist es dass an der Stelle wo diese Effekt vorkommt nichts geändert wurde und dass diese Effekt nicht immer reproduzierbar ist.

Übrigens ich bekenne mich für mein "ja" als kurze Antwort auf drei kurz und präzise Fragen.

@dysti
Meine Erfahrung hat aber gezeigt, daß der Fehler überwiegend an anderer Stelle zu finden ist.
Ich stimme dir zu.
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Variable leer ?

Beitrag von NicTheQuick »

Du wirst entweder irgendwo mit Strings hantieren ohne Thread-Safe in den Optionen aktiviert zu haben oder du schreibst irgendwo in/über Speicherbereiche (hinaus), die du nicht alloziert hast, was dann aber erst später zu einem Problem wird. Schonmal den Purifier ausprobiert?
Benutzeravatar
marcelx
Beiträge: 429
Registriert: 19.02.2010 20:19
Wohnort: Darmstadt

Re: Variable leer ?

Beitrag von marcelx »

Danke für deine Hinweisen.
Du wirst entweder irgendwo mit Strings hantieren ohne Thread-Safe in den Optionen aktiviert zu haben
Ich starte mein Thread so:

Code: Alles auswählen

CreateThread (@getListData(),0)
Frage: was ist gemeint mit "Thread-Safe in den Optionen aktiviert" ?
Schonmal den Purifier ausprobiert
Kenne ich nicht. Wo finde Informationen darüber ?

Danke und Gruß
MarcelX
Win-10, PB 5.31 (Windows - x86)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Variable leer ?

Beitrag von NicTheQuick »

marcelx hat geschrieben:

Code: Alles auswählen

CreateThread (@getListData(),0)
Frage: was ist gemeint mit "Thread-Safe in den Optionen aktiviert" ?
Schau einfach in die Compiler Options. Da gibt es ein entsprechendes Häkchen.
Schonmal den Purifier ausprobiert
Kenne ich nicht. Wo finde Informationen darüber ?
Der ist ebenfalls dort zu finden, aber wie er genau funktioniert, solltest du dir lieber in der Hilfe anschauen.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Variable leer ?

Beitrag von ts-soft »

Der Name der Thread-Procedure läßt vermuten, das mit Listen o. ä. gearbeitet wird, somit
sollte er sich auch noch mit Mutex und Co. beschäftigen.

Threads erfordern fortgeschrittene Programmiererfahrung!

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten