Fehler, Irrtümer, Fragen - Seite 1692

 

Zwei Quellen mit demselben Inhalt belegen eine unterschiedliche Anzahl von Bytes (doppelt so unterschiedlich).

Es scheint, dass an irgendeiner Stelle mit Unicodes herumgepfuscht wird.

Wie kann ich generell erreichen, dass eine große Datei nur halb so viele Bytes benötigt? Dabei bleibt der Text der Quelle unverändert.

 
fxsaber:

Zwei Quellen mit demselben Inhalt belegen eine unterschiedliche Anzahl von Bytes (doppelt so unterschiedlich).

Es scheint, dass an irgendeiner Stelle mit Unicodes herumgepfuscht wird.

Wie kann ich generell erreichen, dass eine große Datei nur halb so viele Bytes benötigt? Dabei bleibt der Ausgangstext unverändert.

Ich kopierte den Inhalt der großen Datei in Notepad und speicherte ihn in einer neuen Datei. Sie wurde um die Hälfte verkleinert.

Und wie kann man erreichen, dass der Meta-Editor keine "dicken" Dateien erstellt?

 
fxsaber:

Und wie sorgt man dafür, dass der Meta-Editor keine "fetten" Bilder erstellt?

Das können Sie nicht. Es ist jedes Mal eine neue Größe.
 
fxsaber:
Du hättest es zuerst machen müssen. Der Fehler tritt NUR hier auf. Alle Anrufe davor gehen ohne Probleme durch.

Das hier ist wirklich seltsam. Die Pluspunkte hier sind bei allen drei Aufrufen falsch.

Das ist eine andere Geschichte.

Nein, es ist das Gleiche. Ich habe mir die Methodenaufrufe im Debugger angesehen: Ich habe den letzten Aufruf in Ihrem Beispiel auskommentiert, Haltepunkte auf beide Methoden der Klasse gesetzt und das Debugging gestartet. Der Haltepunkt wurde aus der Methode void func(const int&) entfernt, d.h. der Compiler hat diese Methode rausgeschmissen, so dass die Mehrdeutigkeit beseitigt wurde. Und wenn man eine Funktion mit einem konstanten Argument aufruft, entfernt der Compiler offensichtlich nicht die Methode mit der Referenz und das Ergebnis ist eine unlösbare Überladung... Etwa so. In jedem Fall ist Ihr Code in C++ fehlerhaft.

 

Sergei Vladimirov:

In jedem Fall ist Ihr Code in C++ fehlerhaft.

In mql gibt es eine zusätzliche Füllung mit Referenzen. So oder so, ich mag das Verhalten im obigen Code nicht.

void f(const int& x)
{}

void OnStart()
{
   f(5); // ошибка
}
 
Sergei Vladimirov:

Das hier ist wirklich seltsam. Hier liegt bei allen drei Aufrufen ein Fehler in den Pluszeichen vor.

In diesem Fall würde ich nicht wollen, dass es überhaupt einen Wechsel zu C++ gibt.
 
Комбинатор:

In mql gibt es zusätzliche Verknüpfungsmöglichkeiten. Jedenfalls gefällt mir das Verhalten im obigen Code nicht.

void f(const int& x)
{}

void OnStart()
{
   f(5); // ошибка
}
Der Fehler ist hier richtig.
 
fxsaber:
In diesem Fall würde ich nicht wollen, dass es überhaupt einen Wechsel zu C++ gibt.

Das ist die Kernfrage der Debatte. Ich habe Ihnen gerade gesagt, "wo der Hund im Loch steckt".

Das Verhalten ist übrigens dasselbe wie in C++, aber wenn wir nur die ersten beiden Aufrufe stehen lassen, wirft der Compiler eine der Funktionen raus, so dass die Unsicherheit verschwindet. Aber es ist immer noch ein Fehler, der vom Compiler automatisch behoben wird.

 
fxsaber:
Der Fehler ist hier richtig.
Ja, aber meiner Meinung nach sollte es gar keine geben)
 
Sergei Vladimirov:
Aber das ist eine strittige Frage. :) Ich habe Ihnen gerade geantwortet, "wo der Hund versteckt ist".

Dort gibt es wirklich keinen Hund. Die Priorität in der Überladung kann im Compiler festgelegt werden, wie es die Entwickler bei den ersten beiden Aufrufen getan haben.