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
Benutzerbild von Zacherl
Zacherl

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

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
 
#2

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
 
#3

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
 
#4

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
Benutzerbild von Zacherl
Zacherl

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

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 02:10
Float Conversions mit bestimmter Präzision und Formatierung sind etwas umständlich bei C++. Es gibt mehrere Möglichkeiten:
https://stackoverflow.com/questions/...decimal-digits

Also entweder über std::stringstream und set::setw() und set::setprecision() . Oder über die C-Style Format Funktionen wie std::snprintf .

Da müsstest du schauen, was dir lieber ist.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 02:19
Float Conversions mit bestimmter Präzision und Formatierung sind etwas umständlich bei C++. Es gibt mehrere Möglichkeiten:
https://stackoverflow.com/questions/...decimal-digits

Also entweder über std::stringstream und set::setw() und set::setprecision() . Oder über die C-Style Format Funktionen wie std::snprintf .

Da müsstest du schauen, was dir lieber ist.
Ok
Werde mich mal umsehen.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 07:44
So geht's aber auch wieder so viele Zeilen
Inklusive kleinen Helfern.

Code:
#define long_proc_c typedef long (__cdecl *Proc)
Code:
HMODULE MSVCRT() {
    static HMODULE hModule;
    if (hModule == 0) { hModule = LoadLibrary(L"MSVCRT"); }
    return hModule;
}
Code:
long Add_Str(OUT WCHAR* dest, IN WCHAR* srce) {
    long nRet = -1; // Error
    HMODULE hModule = MSVCRT();
    if (hModule) {
        long_proc_c(WCHAR*, WCHAR*, size_t);
        Proc hProc = (Proc)GetProcAddress(hModule, "wcsncat");
        if (hProc) { nRet = hProc(dest, srce, _TRUNCATE); }
    }
    return nRet;
}
Code:
       
Add_Str(VideoInfo, STRL(aMediaProperty.Video_Width));
Add_Str(VideoInfo, L" x ");
Add_Str(VideoInfo, STRL(aMediaProperty.Video_Height));
Add_Str(VideoInfo, L", ");
Add_Str(VideoInfo, STRD(aMediaProperty.Video_FPS));
Add_Str(VideoInfo, L" FPS");
SetWindowText(hLblVideoInfo, VideoInfo);
gruss

Geändert von EWeiss ( 5. Aug 2017 um 07:52 Uhr)
  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 10:31 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