Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:43

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Mein Record nimmt nur 4 Variablen.
BeitragVerfasst: Mo Apr 19, 2004 17:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Hi!
Es lassen sich nur 4 Variablen in meinem Record declarieren!
Hier seht hier halt mal das Beispiel, ich wüsste auch nicht mit was das zusammen hängen sollte.

Geht:
Code:
  1. type Tcheckbox = record
  2.      bchecked: boolean;
  3.      bvisible: boolean;
  4.      x: integer;
  5.      y: integer;
  6.      //baction:string;
  7.      end;

Geht Nicht:
Code:
  1. type Tcheckbox = record
  2.      bchecked: boolean;
  3.      bvisible: boolean;
  4.      x: integer;
  5.      y: integer;
  6.      baction:string;
  7.      end;


PS: Die namen der Array spielen keine Rolle


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 17:34 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Solche grütze passiert ab und an mal, ohne nachvollziehbarem Grund.
Versuch mal Delphi neu zu starten.
Wenns danach immer noch net geht, frag ich mich ob das der gesammte, echte Code ist.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 17:37 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die passende Fehlermeldung würde bei der Problemlösung sicherlich weiterhelfen...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 17:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Es geht auch nicht nachem Delphistart, hab ich schon seit 3 Tagen und bekomms net raus!

Keine Fehlermeldung, er schaltet in das "CPU" Fenster...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 17:54 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dann liegt dein Problem woanders. Ich schätze mal es ist ein Pointerproblem (also auch dynamische Arrays), das dann nur zufällig nach ner Änderung an deinem Array auftritt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Mh Recht hast du...
Vllt. könnt ihr mir trotzdem Helfen, ich habe jetzt rausgefunden das es beim zugreifen passiert!
Wie folgt, hab ichs declariert und draufzugegriffen...
Declaration:
Code:
  1.  
  2.       checkboxes: array of TCheckbox;
  3.  


Zugriff
Code:
  1.  
  2. procedure TMenue.insert_checkbox(pos_x,pos_y:integer; b_checked,b_visible:boolean);
  3. begin
  4.  inc(num_check);
  5.  setlength(checkboxes, num_check);
  6.  checkboxes[num_check].x := pos_x;
  7. {  checkboxes[num_check].y := pos_y;
  8. // checkboxes[num_check].bchecked := b_checked;
  9.  checkboxes[num_check].bvisible := b_visible;}
  10. end; // Habe jetzt mal die letzten drei ausgeklammert, es ist also schon beim ersten Zugriff.
  11.  


Will mir ja meine "OGL Kompos" Proggen ^^ (Ausbauen ;) )

PS: Hinzu kommt noch, das die Zeile
// checkboxes[num_check].bchecked := b_checked;
Auch Probs bereitet, wenn ich diese Variable nicht declariere... (baction)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Situation :
  • num_check := 1;
  • inc(num_check) -> num_check = 2
  • setlength(checkboxes, num_check) -> checkboxes geht von 0 bis 1
  • checkboxes[2] gibt es also noch garnicht

Also achte doch auf deine Arraygrenzen, denn unter Delphi beginnt der Index doch immer bei 0 (das hab ich dir auch glaub ich schonmal bei so nem Problem gesagt),

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:06 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Beginnen dynamische Arrays net mit 0???
Also
Code:
  1.  checkboxes[num_check-1].x := pos_x;


EDIT:
Verdammt!!!! Ich wollt auch mal Klugscheißen!!! :evil: :twisted: 8)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Mh, das ist mir klar das der index bei 0 anfängt SOS!
Nur komisch das es ging, wenn ich baction nicht eingefügt habe, und alles so wie geplant! ^^
Die Koordinaten stimmte und so weiter... :-/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wie jetzt, Dir war das klar??? Hast du absichtlich über dein Array hinaus gegriffen!? :shock:
Dann brauchste dich aber auch net wundern, wenn solcher Mist passiert. :roll:

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Zuletzt geändert von Flash am Mo Apr 19, 2004 18:18, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:16 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Das war reiner Zufall das vorher halt kein genutzter Speicher überschrieben wurde.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 18:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Absichtlich war das nicht, ich wusste es, habe es aber nicht bemerkt, dank SOS's (^^) Beschreibung klingelts :-/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Apr 19, 2004 21:24 
Offline
DGL Member

Registriert: Mo Apr 05, 2004 19:51
Beiträge: 105
Dumme Frage: Warum schaltest du nicht die Bereichsprüfung in den Compilereinstellungen an? Dann wirft der Compiler nämlich bei solch ungültigen Zugriffen einen Fehler (und zeigt dir die Codestelle) und fängt nicht an, wild Speicherbereiche zu überschreiben, was später dann mal Ärger machen kann/wird.

Und ja, ich weiss dass der Code damit etwas langsamer ist. Zumindest beim Entwickeln sollte die Prüfung IMHO aber immer an sein.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]