AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IntToStr zu WCHAR

Ein Thema von EWeiss · begonnen am 4. Aug 2017 · letzter Beitrag vom 5. Aug 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: IntToStr zu WCHAR

  Alt 4. Aug 2017, 23:13
So macht man aus einer Zeile 11

Delphi-Quellcode:
        INT64 Second = (aMediaProperty.PlaybackLength / 10000) / 1000;
        
        WCHAR Minutes[MAX_PATH];
        WCHAR Seconds[MAX_PATH];
        WCHAR StreamLenght[MAX_PATH];
        // Minuten
        std::wstring Min_tmp = std::to_wstring(Second / 60);
        WCHAR * Min = &Min_tmp[0];
        Str_Combine(Minutes, Min, L" Min ");
        // Sekunden
        std::wstring Sec_tmp = std::to_wstring(Second %= 60);
        WCHAR * Sec = &Sec_tmp[0];
        Str_Combine(Seconds, Sec, L" Sec");
        // Kombinieren
        Str_Combine(StreamLenght, Minutes, Seconds);
        // Ausgabe
        SetWindowText(hLblStreamLenght, StreamLenght);
Was für ein Schmarrn. Eine andere Lösung fällt mir nicht ein.
Wenn ich das jetzt hiermit auch noch machen muss dann habe ich 50 Zeilen anstelle von 3

Delphi-Quellcode:
        //lbl_VideoInfo.Caption : = FormatFloat('#,##0', aMediaProperty.Video_Width) + ' x ' +
        // FormatFloat('#,##0', aMediaProperty.Video_Height) + ', ' +
        // FormatFloat('##0.00', aMediaProperty.Video_FPS) + ' FPS';
        //SetWindowText(hlblVideoInfo, VideoInfo);
        //lbl_AudioProperty.Caption : = intToStr(aMediaProperty.Audio_Channels) + ' Channel, ' +
        // FormatFloat('#,##0', aMediaProperty.Audio_Samplerate) + ' SPS, ' +
        // intToStr(aMediaProperty.Audio_BitsPerSample) + ' BPS';
        //SetWindowText(hlblAudioProperty, AudioProperty);
gruss

Geändert von EWeiss ( 4. Aug 2017 um 23:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 00:57
Dein Fehler kommt daher, dass du deine Variable als WCHAR (einzelnes Zeichen = WideChar) deklarierst und nicht als WCHAR* (PWideChar).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 01:02
Dein Fehler kommt daher, dass du deine Variable als WCHAR (einzelnes Zeichen = WideChar) deklarierst und nicht als WCHAR* (PWideChar).
Sorry ist das gleiche Problem
Code:
WCHAR * StreamLenght = std::to_wstring(Second / 60) + L"Min " + std::to_wstring(Second %= 60) + L"Sec";
Zitat:
Fehler (aktiv) E0413 Es ist keine passende Konvertierungsfunktion von ""std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t>>"" in ""WCHAR *"" vorhanden.
Zitat:
Fehler C2440 "Initialisierung": "std::basic_string<wchar_t,std::char_traits<wchar_ t>,std::allocator<wchar_t>>" kann nicht in "WCHAR *" konvertiert werden
Danke.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 01:11
Probier mal:
Delphi-Quellcode:
std::wstring streamLength = std::to_wstring(Second / 60) + L"Min " + std::to_wstring(Second %= 60) + L"Sec";
const WCHAR* ptr = streamLength.c_str();
Der Assignment Operator ist scheinbar nicht überladen.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 01:20
Probier mal:
Delphi-Quellcode:
std::wstring streamLength = std::to_wstring(Second / 60) + L"Min " + std::to_wstring(Second %= 60) + L"Sec";
const WCHAR* ptr = streamLength.c_str();
Der Assignment Operator ist scheinbar nicht überladen.
Ja genau das habe ich vorher auch versucht.
Das Problem dabei ist das dann die Berechnung von (Second / 60) fehlschlägt.
Seltsamer weise stimmen aber die Sekunden (Second %= 60). (Second mod 60).

Zudem kommt noch das ich einen "const WCHAR*" nicht an SetWindowText übergeben kann.
So! stimmen die
Code:
        std::wstring Min_tmp = std::to_wstring(Second / 60);
        WCHAR * Min = &Min_tmp[0];
gruss

Geändert von EWeiss ( 5. Aug 2017 um 01:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 01:43
Also %= ist zumindest auch falsch, es muss nur % sein. var += value und Konsorten sind Kurzformen von var = var + value .

So funktioniert es bei mir ohne Probleme:
Delphi-Quellcode:
uint32_t seconds = 350;

std::wstring title = std::to_wstring(seconds / 60) + L"Min " + std::to_wstring(seconds % 60) + L"Sec";

AllocConsole;
SetWindowTextW(GetConsoleWindow(), title .c_str());
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 01:53
Also %= ist zumindest auch falsch, es muss nur % sein. var += value und Konsorten sind Kurzformen von var = var + value .

So funktioniert es bei mir ohne Probleme:
Delphi-Quellcode:
uint32_t seconds = 350;

std::wstring title = std::to_wstring(seconds / 60) + L"Min " + std::to_wstring(seconds % 60) + L"Sec";

AllocConsole;
SetWindowTextW(GetConsoleWindow(), title .c_str());
Das ist nett von dir Danke..
So funktioniert es 100%. Kann also die 100 Zeilen wieder löschen.

Wenn du möchtest kannst mir dabei auch noch helfen. ?
Delphi-Quellcode:
         //lbl_VideoInfo.Caption : = FormatFloat('#,##0', aMediaProperty.Video_Width) + ' x ' +
         // FormatFloat('#,##0', aMediaProperty.Video_Height) + ', ' +
         // FormatFloat('##0.00', aMediaProperty.Video_FPS) + ' FPS';
         //SetWindowText(hlblVideoInfo, VideoInfo);
         //lbl_AudioProperty.Caption : = intToStr(aMediaProperty.Audio_Channels) + ' Channel, ' +
         // FormatFloat('#,##0', aMediaProperty.Audio_Samplerate) + ' SPS, ' +
         // intToStr(aMediaProperty.Audio_BitsPerSample) + ' BPS';
         //SetWindowText(hlblAudioProperty, AudioProperty);
Danach wären die String Probleme beseitigt.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz