Fehler, Irrtümer, Fragen - Seite 2825

 
Vladimir Pastushak:

Was ist an dem Code falsch?

Ich würde auch lieber nicht antworten, als zu erklären, wie schädlich es ist, mit einer generischen Zeichenliste zu arbeiten.

 
Alexey Viktorov:

Ich würde auch lieber nicht antworten, als zu erklären, wie schädlich es ist, mit einer generischen Zeichenliste zu arbeiten.

Unter vier Augen

 

Istdie Syntaxhervorhebung auf der Website fehlerhaft?


b.highlight ist keine Funktion

 
2020.08.15 13:07:42.660 Network 'xxxx': no connection to MetaQuotes-Beta
 

Es gibt eine Textdatei, aber die Kodierung ist vorher nicht bekannt. Dementsprechend müssen wir festlegen, mit welchem Flag die Datei geöffnet werden soll: FILE_ANSI oder FILE_UNICODE.

Wer einen hat, bitte ein Fahrrad zu diesem Thema teilen.

 
fxsaber:

Es gibt eine Textdatei, aber die Kodierung ist vorher nicht bekannt. Dementsprechend müssen wir festlegen, mit welchem Flag die Datei geöffnet werden soll: FILE_ANSI oder FILE_UNICODE.

Wenn Sie eines haben, teilen Sie uns bitte Ihr Fahrrad mit.

Sind in der Datei keine Kodierungskennzeichnungen vorhanden?

 

Manchmal hat Unicode eine Kodierungsbezeichnung in den ersten 2 Bytes.

Es gibt auch das VinAPI IsTextUnicode wie dieses https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-istextunicode

IsTextUnicode function (winbase.h) - Win32 apps
IsTextUnicode function (winbase.h) - Win32 apps
  • 2018.12.05
  • lastnameholiu
  • docs.microsoft.com
Determines if a buffer is likely to contain a form of Unicode text.
 
Ich habe dies getan.
  bool IsUnicode( const uchar &Bytes[] )
  {
    return((::ArraySize(Bytes) > 1) && (Bytes[0] == 0xFF) && (Bytes[1] == 0xFE));
  }

  void Unicode2ANSI( uchar &Bytes[] )
  {
    if (IsUnicode(Bytes))
    {
      const int Size = (::ArraySize(Bytes) >> 1) - 1;
      
      for (int i = 0; i < Size; i++)
        Bytes[i] = Bytes[(i << 1) + 2];
        
      ::ArrayResize(Bytes, Size);
    }
  }
Aber ich weiß nicht, ob diese Bedingung immer richtig ist.
 
fxsaber:
Ich habe es so gemacht. Aber ich weiß nicht, ob diese Bedingung immer richtig ist.

Dieses Token ist optional und unterscheidet sich für LE, BE und UTF8. Fehlt es, kann man theoretisch die Anzahl der Null-Bytes in einem Anfangsstück der Datei zählen

 
Andrei Trukhanovich:

Dieses Token ist optional und unterscheidet sich für LE, BE und UTF8. Fehlt es, ist es theoretisch möglich, die Anzahl der Null-Bytes in einem Anfangsstück der Datei zu zählen.

Ich habe diese Abhilfe in Betracht gezogen, danke. Das scheint die einzige Möglichkeit zu sein.