Vorankündigung Zusi 3.5

Hier kann alles Allgemeine rund um Zusi 3 gefragt und beantwortet werden. Neuigkeiten zum Programm werden hier erscheinen.
Nachricht
Autor
Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Vorankündigung Zusi 3.5

#141 Beitrag von F. Schn. »

Ah, ok, danke. Dann ist dllVersion ... Als Aufruf mit einem Buffer gedacht?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Vorankündigung Zusi 3.5

#142 Beitrag von Johannes »

F. Schn. Hast du zufällig ein kompilerbares Beispiel, damit ich nicht selbst eins schreiben muss? Mit einem Delphi-Testprogramm kann ich's spontan nämlich nicht reproduzieren.

Christian Sch.
Beiträge: 374
Registriert: 15.01.2009 23:29:56
Aktuelle Projekte: Gesundheit geht vor...
Wohnort: Haidlfing

Re: Vorankündigung Zusi 3.5

#143 Beitrag von Christian Sch. »

Hallo,

die DLL landet also im Speicher.

Denkanstösse:
  • Execute Disable: Muss der Speicherbereich der DLL für das benutzende Programm als vertrauenswürdig markiert werden?
  • Hat die DLL eine Signatur die sie vertrauenswürdig macht? Kann man bei fehlender Signatur die Vertrauenswürdigkeit erzwingen?
Sind für Compiler ( eher nicht, oder gibt es hier Warnungen? ) oder Runtime Umgebung Veränderungen zu diesen Punkten dokumentiert? Kann man von Seiten der DLL auf diese Dinge Einfluß nehmen?

Just my two Cents. Wahrscheinlich nicht viel Wert...

Gruß
Christian

Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Vorankündigung Zusi 3.5

#144 Beitrag von F. Schn. »

Leider frühstens übermorgen. Aus dem Kopf hat's aber so ähnlich ausgesehen:

Code: Alles auswählen

    [DllImport("z3strbie_alt.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "TempSpeichern_st3")]
    public static extern void TempSpeichern_st3_alt
        ([MarshalAs(UnmanagedType.LPStr)] string arbeitsverzeichnis,
         [MarshalAs(UnmanagedType.LPStr)] string datei);
    [DllImport("z3strbie_neu.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "TempSpeichern_st3")]
    public static extern void TempSpeichern_st3_neu
        ([MarshalAs(UnmanagedType.LPStr)] string arbeitsverzeichnis,
         [MarshalAs(UnmanagedType.LPStr)] string datei);
    void Main()
    {
        TempSpeichern_st3_alt("Test", "Test");
        TempSpeichern_st3_neu("Test", "Test");
    }
@Christian: Wären alles andere Ausnahmen.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Max Senft
Administrator
Beiträge: 3004
Registriert: 04.11.2001 14:01:40
Aktuelle Projekte: Dies und das
Wohnort: Blieskastel, Saarland, Deutschland
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#145 Beitrag von Max Senft »

Hi,

mooooment: wird in die PAnsiChar Parameter was zurückgeschrieben? Also sind das "In-Out" Parameter? Dann müsste evtl. bekannt sein wie groß der Speicherbereich dafür sein sollte, oder?

Edit (hab nicht gemerkt, dass da schon Antworten waren): Vielleicht einfach mal mit einem "dummen", relativ großen, genullten Byte-Array als PAnsiChar-Parameter einen Aufruf wagen und schauen, ob dann keine Zugriffsverletzung mehr passiert?

Gruß
Max
Administrator, Programmierer, Ansprechpartner bei Problemen mit dem Board

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Vorankündigung Zusi 3.5

#146 Beitrag von Johannes »

Danke, so kompiliert es:

Code: Alles auswählen

using System.Runtime.InteropServices;
     
public class Program {
  [DllImport("z3strbie_alt.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "TempSpeichern_st3")]
  public static extern void TempSpeichern_st3_alt
      ([MarshalAs(UnmanagedType.LPStr)] string arbeitsverzeichnis,
       [MarshalAs(UnmanagedType.LPStr)] string datei);
  [DllImport("z3strbie_neu.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "TempSpeichern_st3")]
  public static extern void TempSpeichern_st3_neu
      ([MarshalAs(UnmanagedType.LPStr)] string arbeitsverzeichnis,
       [MarshalAs(UnmanagedType.LPStr)] string datei);

  public static void Main()
  {     
    TempSpeichern_st3_alt("Test", "Test");
    TempSpeichern_st3_neu("Test", "Test");
  }     
} 

Code: Alles auswählen

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /platform:x86 /t:exe /out:test.exe test.cs
Problem: Es funktioniert prächtig und stürzt überhaupt nicht ab. Was mach ich falsch?

Wenn's abstürzt: Was ist denn genau die Fehlermeldung (inkl. Absturzadresse)?

Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Vorankündigung Zusi 3.5

#147 Beitrag von F. Schn. »

Okay, ich hatte wohl _alt und _neu nicht im selben Programm getestet. So sieht es bei mir derzeit aus:

Code: Alles auswählen

            if (new System.IO.FileInfo("z3strbie_alt.dll").Length != 7147520)
                throw new System.Exception();
            if (new System.IO.FileInfo("z3strbie_neu.dll").Length != 92354920)
                throw new System.Exception();
            //TempSpeichern_st3_alt("Test", "Test");
            TempSpeichern_st3_neu("Test", "Test");
Und in dem Fall stürzt er bei mir gerade beim neu ab. Wenn ich alt einkommentiere, läuft er in der Tat durch.
Weitere Infos, z.B. Adressen, gibt die System.AccessViolationException nicht an.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Johannes
Beiträge: 3197
Registriert: 14.03.2009 22:36:06
Aktuelle Projekte: Zusitools (http://git.io/zusitools)

Re: Vorankündigung Zusi 3.5

#148 Beitrag von Johannes »

Danke, damit kann ich es reproduzieren.

Ich sehe hier kurz vor dem Absturz einen Aufruf von "GdipAlloc", ohne dass zuvor "GdiplusStartup" aufgerufen worden wäre. Deshalb gibt GdipAlloc einen Nullpointer zurück, der dann vermutlich zum Absturz führt.

Achtung: Der Aufruf von GdiplusStartup hat einige Rahmenbedingungen. Ich zitiere https://learn.microsoft.com/en-us/windo ... lusstartup:
Do not call GdiplusStartup or GdiplusShutdown in DllMain or in any function that is called by DllMain. If you want to create a DLL that uses GDI+, you should use one of the following techniques to initialize GDI+:

Require your clients to call GdiplusStartup before they call the functions in your DLL and to call GdiplusShutdown when they have finished using your DLL.
Export your own startup function that calls GdiplusStartup and your own shutdown function that calls GdiplusShutdown. Require your clients to call your startup function before they call other functions in your DLL and to call your shutdown function when they have finished using your DLL.
Call GdiplusStartup and GdiplusShutdown in each of your functions that make GDI+ calls.
Am besten wäre es, wenn die z3strbie.dll gar keine GDI+-Funktionen aufrufen würde. Wozu braucht "TempSpeichern_st3" GDI+?

Sara
Beiträge: 23
Registriert: 04.11.2021 21:40:46

Re: Vorankündigung Zusi 3.5

#149 Beitrag von Sara »

Mir ist gerade ein kleiner Bug in Zusi 3.4.99.37 64 bit aufgefallen:
Wenn ich den Haken bei "Fahrplandaten im Startfenster nicht anzeigen" setze und dann das Einstellungsfenster schließe ist danach der Haken weg. Die Option an sich funktioniert problemlos.
In der Version 3.4.6.0 ist der Bug noch nicht vorhanden.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#150 Beitrag von Carsten Hölscher »

Den dll-Fehler hab ich nach längerer Suche jetzt gefunden (leider half Delphi nur bedingt bei der Fehlersuche und stürzte nicht wie sonst üblich an der Stelle ab, wo das Problem liegt - also alles nach und nach Schritt für Schritt durchgehen). Grund war eine High-dpi-Anpassung für den Signalassi, die im reinen dll-Modus mangels Fenster nicht aufgerufen werden darf.

Carsten

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#151 Beitrag von Carsten Hölscher »

"Fahrplandaten im Startfenster nicht anzeigen"
Ist dann auch behoben und betraf auch die 32bit-Version.

Carsten

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#152 Beitrag von Carsten Hölscher »

Gleich ist eine Runde Beta-Updates für 32 und 64 bit verfügbar.
Alles was in diesem Thema gemeldet worden ist, hab ich abgearbeitet bzw. geprüft und im aktuellen Stand keinen Fehler mehr finden können.
Bitte testet das noch einmal möglichst umfangreich - ich werde auch im Forum noch einmal suchen nach weiteren Meldungen. Bei positivem Befund wäre das dann der Stand für 3.5.0.

ZusiSim.exe : 3.4.99.37
- N Dyn. und Mg-Bremsen können unterschiedliche Bremsgewichte für P und R bekommen
- N Handbremsen können auch einen kN-Wert bekommen
- N Handbremsen im Zug über ZusiDisplay ansteuerbar
- Ä Ereignis im Fahrplan übersteuert ggf. gleiches Ereignis im Signal (z.B. bei Befehlsvordruck)
- Ä Umstellung der integrierten Browser auf Edge mit IE als Rückfalllösung
- N "Hauptluftbehälterleitung vorhanden" funktioniert
- Zahlreiche kleinere Verbesserungen und Korrekturen
ZusiSim.exe : 3.4.99.51

ZusiFtdEditor.exe : 3.4.99.23
- Ä Neu erstellt
ZusiFtdEditor.exe : 3.4.99.24

ZusiFzgEditor.exe : 3.4.99.23
- F Vorschlagen-Funktion bei Drehstrom-Elok geht wieder
- N Dyn. und Mg-Bremsen können unterschiedliche Bremsgewichte für P und R bekommen
- N Handbremsen können auch einen kN-Wert bekommen
ZusiFzgEditor.exe : 3.4.99.27

Zusi3DEditor.exe : 3.4.99.24
- Ä Stackgröße wieder auf 3.4-Wert erhöht
- N Möglichkeit, z-Koordinate zu setzen
- N Parallelgleis optional "alle Zweige verfolgen"
Zusi3DEditor.exe : 3.4.99.30

z3strbie.dll : 3.4.99.21
- Ä Neu erstellt
z3strbie.dll : 3.4.99.22

Benutzeravatar
Jens Haupert
Beiträge: 4911
Registriert: 23.03.2004 14:44:34
Aktuelle Projekte: http://www.zusidisplay.de
Wohnort: Berlin
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#153 Beitrag von Jens Haupert »

Hallo,

was mir aufgefallen ist: bei den ET424/426 erbringt nur der erste Fzg-Teil Leistung. Laut Dialog haben alle weiteren Teile einen "Nullstellungszwang" und erzeugen daher nur 0kN. Bei anderen mehrteiligen Fahrzeugen konnte ich es noch nicht nachstellen.

Grüße
Jens

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#154 Beitrag von Carsten Hölscher »

Hast du mal einen Fahrplan dazu?
Carsten

Benutzeravatar
Jens Haupert
Beiträge: 4911
Registriert: 23.03.2004 14:44:34
Aktuelle Projekte: http://www.zusidisplay.de
Wohnort: Berlin
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#155 Beitrag von Jens Haupert »

Carsten Hölscher hat geschrieben: 06.01.2023 10:27:58Hast du mal einen Fahrplan dazu?
Hallo,

ich habe es mit dem Fahrplan Timetables\Deutschland\Lehrte_Harburg\Lehrte-Harburg_2017_04Uhr-14Uhr.fpn getestet (z.B. S 34710_34713).

Grüße
Jens

Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Vorankündigung Zusi 3.5

#156 Beitrag von F. Schn. »

Das Fehlersuche-Fenster der 64-Bit-Version erzeugt bei mir direkt beim öffnen eine nulloide Zugriffsverletzung. (Streckenbaututorium Üg)

Ich würde auch gerne die Übersetzung noch mal testen, es scheint grundsätzlich wieder zu gehen, aber z.B. das Menü ist Deutsch. Ich vermute, es haben sich da die text.txt-Dateien geändert? Kannst du die kurz hochladen?
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Vorankündigung Zusi 3.5

#157 Beitrag von F. Schn. »

Ich hätte noch eine zweite Zugriffsverletzung (64 bit) bei nicht (mehr) vorhandenen Aufgleisfahrstraßen:

Code: Alles auswählen

[Window Title]
Fehler

[Content]
Zugriffsverletzung bei Adresse 0000000000E908AC in Modul 'ZusiSim.exe'. Lesen von Adresse FFFFFFFFFFFFFFFF.

[OK]
Reproduzierbar z.B. durch:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<Zusi>
<Info DateiTyp="Fahrplan" Version="A.4" MinVersion="A.1">
<AutorEintrag AutorID="5" AutorName="Dr. Michael Poschmann"/>
</Info>
<Fahrplan AnfangsZeit="1985-06-30 12:00:00">
<BefehlsKonfiguration Dateiname="Signals\Deutschland\Befehle\DB408_1984.authority.xml"/>
<LaPDF/>
<StrebuPDF/>
<ErsatzfahrplaenePDF/>
<Begruessungsdatei/>
<trn Gattung="N" Nummer="3001" Zuglauf="Eslohe - Wenholthausen" Prio="1500" BremsstellungZug="4" APBeschl="0.5" FahrplanGruppe="Personenzüge" Rekursionstiefe="5" FahrstrName="xAufgleispunkt -&gt; Eslohe N1" Zugtyp="1" Buchfahrplandll="_InstSetup\lib\timetable\Buchfahrplan_DB_1979.dll">
<Datei Dateiname="Timetables\_Docu\Streckenbaututorium.fpn" NurInfo="1"/>
<FahrplanEintrag Ank="1985-06-30 12:00:00" Abf="1985-06-30 12:06:00" Betrst="Eslohe">
<FahrplanSignalEintrag FahrplanSignal="N1"/>
</FahrplanEintrag>
<FahrplanEintrag Ank="1985-06-30 12:11:00" Abf="1985-06-30 12:12:00" Betrst="Wenholthausen">
<FahrplanSignalEintrag FahrplanSignal="Gleis 1"/>
<FahrplanSignalEintrag FahrplanSignal="Gleis 2"/>
</FahrplanEintrag>
<FahrzeugVarianten Bezeichnung="default" ZufallsWert="1">
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Dieselloks\BRD\V160_Familie\V160\V160.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Reisezugwagen\BRD\Eilzugwagen\B4ym51.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Reisezugwagen\BRD\Eilzugwagen\AB4ym51.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Reisezugwagen\BRD\Eilzugwagen\BD4ymf54.rv.fzg"/>
</FahrzeugInfo>
</FahrzeugVarianten>
</trn>
<trn Gattung="Üg" Nummer="69900" Zuglauf="Wenholthausen - Eslohe" Prio="1500" BremsstellungZug="2" APBeschl="0.5" FahrplanGruppe="Güterzüge" Rekursionstiefe="5" FahrstrName="Aufgleispunkt -&gt; Wenholthausen F" Buchfahrplandll="_InstSetup\lib\timetable\Buchfahrplan_DB_1979.dll">
<Datei Dateiname="Timetables\_Docu\Streckenbaututorium.fpn" NurInfo="1"/>
<FahrplanEintrag Ank="1985-06-30 12:00:00" Abf="1985-06-30 12:01:15" Betrst="Wenholthausen">
<FahrplanSignalEintrag FahrplanSignal="F"/>
</FahrplanEintrag>
<FahrplanEintrag Abf="1985-06-30 12:02:00" Betrst="Wenholthausen">
<FahrplanSignalEintrag FahrplanSignal="P1"/>
<FahrplanSignalEintrag FahrplanSignal="P2"/>
</FahrplanEintrag>
<FahrplanEintrag Ank="1985-06-30 12:06:00" Abf="1985-06-30 12:10:00" Betrst="Eslohe">
<FahrplanSignalEintrag FahrplanSignal="P2"/>
</FahrplanEintrag>
<FahrzeugVarianten Bezeichnung="default" ZufallsWert="1">
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Dieselloks\BRD\V100_Familie\V100.20.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Gueterwagen\BRD\G-Wagen\Gms54\Gms54.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Gueterwagen\BRD\Z-Wagen\2-Achser\isolierte_Kesselwagen\IKW.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="2">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Gueterwagen\BRD\O-Wagen\Omm55\Omm55.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="2">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Gueterwagen\BRD\R-Wagen\Rlmms58\Rlmms58.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Gueterwagen\BRD\G-Wagen\Gms54\Gms54.rv.fzg"/>
</FahrzeugInfo>
<FahrzeugInfo IDHaupt="1" IDNeben="1">
<Datei Dateiname="RollingStock\Deutschland\Epoche3\Gueterwagen\BRD\G-Wagen\Gms54\Gms54.rv.fzg"/>
</FahrzeugInfo>
</FahrzeugVarianten>
</trn>
<StrModul>
<Datei Dateiname="Routes\_Docu\Kap3_Uebungsstrecke\000442_005680_Eslohe\Eslohe_1980.st3"/>
<p/>
<phi/>
</StrModul>
<StrModul>
<Datei Dateiname="Routes\_Docu\Kap3_Uebungsstrecke\000443_005681_Wenholthausen\Wenholthausen_1980.st3"/>
<p/>
<phi/>
</StrModul>
<UTM UTM_WE="442" UTM_NS="5680" UTM_Zone="32" UTM_Zone2="U"/>
</Fahrplan>
</Zusi>
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Leonard K.
Beiträge: 1049
Registriert: 12.06.2020 19:03:07
Aktuelle Projekte: NMH

Re: Vorankündigung Zusi 3.5

#158 Beitrag von Leonard K. »

Endlich kann man wieder normal im Editor navigieren. Die Verzeichnisse merkt er sich jetzt auch wieder korrekt, das dürfte das Arbeiten im 3D-Editor gleich deutlich angenehmer machen.

Weiterhin besteht leider der Fehler mit NAN im Polygonbaumodus. Da das aber nur in der 64bit Version auftaucht, schreibe ich es mal in das entsprechende Thema.

Benutzeravatar
Leonard K.
Beiträge: 1049
Registriert: 12.06.2020 19:03:07
Aktuelle Projekte: NMH

Re: Vorankündigung Zusi 3.5

#159 Beitrag von Leonard K. »

Bei mir kommt jetzt ständig "Fehler bei Bereichsprüfung" (sowohl im 32 als auch im 64 bit Editor). Danach geht gar nichts mehr:
Bild

So ganz reproduzieren kann ich es noch nicht. Aber es tritt häufig auf. Hat das noch jemand?

Alwin Meschede
Beiträge: 8926
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: Vorankündigung Zusi 3.5

#160 Beitrag von Alwin Meschede »

Leonard K. hat geschrieben: 06.01.2023 18:15:35 So ganz reproduzieren kann ich es noch nicht. Aber es tritt häufig auf. Hat das noch jemand?
Also ich habe gerade mehr als eine halbe Stunde problemlos mit dem neuen Editor arbeiten können.
Mein Youtube-Kanal: youtube.com/echoray1

Antworten