Deutsch
Forum

Bereichsarray Dimensionierung ändern

 

Hubert
Binnewies
Hallo zusammen..

Ich hab da eine struktuiertes Bereichsarray als globales Array.
Nun bin ich aber gezwungen die Dimensionierung innerhalb eines Proc Endprc zu ändern.
Das dabei der Inhalt verloren geht ist egal, aber innerhalb eines Proc Endproc bleibt es nicht global.
Hat eine ne Idee wie ich die Grösse ändern kann und das Bereichsarray dennoch global bleibt?

Danke schonmal im voraus.

Hubert

P.S. denkt dran ich habe XProfan 9.1 nicht 10
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
23.10.2006  
 



[quote:b1906f5467]aber innerhalb eines Proc Endproc bleibt es nicht global[/quote:b1906f5467]Hm doch!?
 
23.10.2006  
 




Hubert
Binnewies
und wie mach ich das dann???

das dimensionieren sieht ha so aus:
KompilierenMarkierenSeparieren
DECLARE Bereich#[100]
Struct Angaben=text1$(20),Wert1!
Dim Bereich#[],Angaben

demzufolge müsste ich innerhalb des Proc-Endproc einen neuen Declare Bereich#[200] setzen...
was die Variable lokal aber nicht global definiert...

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
23.10.2006  
 



Hm ich hab ne Idee!

Deklariere doch 2 Globale!

Merke Dir immer welche Globale Du zuletzt geDimt hast, und nimm dann die andere.

Hilft das?
 
23.10.2006  
 




Hubert
Binnewies
Leider nein....

Ich habe ein Bereichsarray das am Programmanfang mit dem Inhalt einer Datei gefüllt wird.
Die Anzahl der Einträge kann sich aber während des Programmablaufes ändern, und ich lese den Inhalt in einer Procedure aus...und wenn dann das Array zu klein ist habe ich verschissen bis inne Steinzeit...

Ich muss in der Lage sein das Globale Array ( ich brauche den Inhalt an vielen Stellen im Programm ) innerhalb dieser Procedure zu verändern, meinetwegen kann dabei auch der Inhalt verloren gehen da ich sowieso dabei den Dateiinhalt neu lade...
Und Deiner Idee nach würde das nur einmal funktionieren, aber das kann in einer unbekannten Anzahl von Fällen passieren.

Hat da nicht einer ne Idee???

Danke schonmal im voraus.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
23.10.2006  
 



Hm naja dann ist das Problem aber das Array ansich - weil es in XProfan nur statisch definierbar ist.

Probiere es doch mal mit listen? Ich nehme für sowas alles meine eigene Unit - drum hab ich sie ja geschrieben ^^

Eine solche List ist wie ein Array - nur die Größe kann sich ständig ändern und ist nicht statisch.

Lists.Pcu [...] 

Sollte die Unit mit XProfan10 kompiliert sein dann kann ich sie Dir - wenn sie bei Dir nicht funktioniert - auch gerne nochmal mit XProfan9 kompilieren.
 
23.10.2006  
 




Hubert
Binnewies
das ist ne verdammt gute Idee..... Danke....
werde ich morgen früh teste...

Danke

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
23.10.2006  
 




Hubert
Binnewies
Hallo IF
Ich hab mich mit der PCU beschäftigt,
Ich muss sagen : Hochachtung..
Die ist ein ziemlich mächtiges Werkzeug, ABER....

[quote:b65a49bb67=iF]
Eine solche List ist wie ein Array - nur die Größe kann sich ständig ändern und ist nicht statisch.
[/quote:b65a49bb67]
Das stimmt schon, aber Leider nur eindimensional.
Im Moment brauche ich etwa 15 Dimensionen (Strukturiert).
Klar, könnte ich jetzt die erste Liste dazu verwenden die Handels der anderen Listen aufzunehmen (bin ich aber ständig mit dem Wandeln von Ziffen nach String und umgekehrt beschäftigt), womit ich ein mehrdimensionales Array hätte, aber dann ist es zum Beispiel mit Sortieren essig.
Müsste ich dann wieder alles selbst programmieren.
Wäre doch ein guter Vorschlag : Liste zu verknüpfen, womit man mehrdimensionale Arrays erhält, und wenn man eine sortiert, werden die anderen in der Reihenfolge umgestellt wie die eine die sortiert wird.
Und so weiter.
Und es wäre schön wenn die lists nicht nur Strings sondern auch Integer und Float aufnehmen könnte.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
24.10.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Hubert!

BereichsArrays kann man recht einfach simulieren:
KompilierenMarkierenSeparieren
!
window 50,50-700,500
declare Data#
struct DATA=Wert&,Text$(19)
dim Data#,DATA
declare Size&
Size&=sizeof(Data#)
declare Mem#
dim Mem#,Size&*10
def DataSetzen(1) Mem#+Size&*%(1)

whileloop 0,9

    Data#=DataSetzen(&loop)
    Data#.Wert&=&loop
    Data#.Text$="Test"+str$(&loop)

endwhile

Data#=DataSetzen(5)
print Data#.Wert&
print Data#.Text$
print
Data#=DataSetzen(7)
print Data#.Wert&
print Data#.Text$
print
waitkey

Zur ReDimensionierung musst du nur Mem# ändern. Unter XProfan 9 müsstest du dazu den Inhalt von Mem# in einen zusätzlichen Bereich kopieren, Mem# per Dispose und Dim ändern und die Daten wieder zurückschreiben. Das sollte mit @Char$( ) / Char oder per API möglich sein.

BTW: Bei älteren Profan-Versionen (unter 8 oder so) bricht @Char$( ) das Einlesen von Daten in den String bei Erreichen eines NullBytes ab.

HTH
Pascal
 
24.10.2006  
 




Hubert
Binnewies
[quote:79d768360d=Uwe Pascal Niemeier]
Zur ReDimensionierung musst du nur Mem# ändern. Unter XProfan 9 müsstest du dazu den Inhalt von Mem# in einen zusätzlichen Bereich kopieren, Mem# per Dispose und Dim ändern und die Daten wieder zurückschreiben. Das sollte mit @Char$( ) / Char oder per API möglich sein.
[/quote:79d768360d]
Und genau da liegt mein Problem....
Genau das ist bei meinem Proggi nur innerhalb eines Proc-Endproc möglich.
Nur wenn ich innerhalb dieser Procedur das Array Dispose , muss ich es auch neu Declarieren,Strukturieren und Dimensioniern......und....schwups ist es ein lokales und kein globales Array mehr.
und wie gesagt, ich brauche den Inhalt nicht zu retten, ich lese den eh immer neu ein, ist nicht anders möglich.
Im Moment bin ich versucht (es ist der gangbarste Weg) zu schätzen wieviele Einträge niemals auftauchen können und das Array am Anfang so zu Dimensionieren.
Klingt zwar blöd, aber von der heutigen Technik auszugehen sollte genug Hauptspeicher vorhanden sein um ein 18 Dimensionales Array#[1000] mit 11 Strings a´50 Zeichen, einer mit 2000 Zeichen und 6 Integers und das ganze 2 mal aufzunehmen.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
24.10.2006  
 




Uwe
''Pascal''
Niemeier
Hallo Hubert!

Wieso musst du die Bereichsvariable neu declarieren??
Nach DISPOSE solltest du sie direkt mit DIM wieder dimensionieren können, und wenn die Variable global deklariert wurde, spielt es keine Rolle, ob das in einer Proc passiert.

HTH
Pascal
 
24.10.2006  
 



<offtopic>Uwes Avatar ist echt stark... </offtopic>
 
24.10.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.096 Betrachtungen

Unbenanntvor 0 min.
H.Brill24.09.2022
Michael W.26.03.2016
Werner Schumann14.09.2013
Julian Schmidt13.06.2013
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie