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
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 11:27
Zu Deiner Lösung sag ich jetzt nix.........

Code:
#include <stdio.h>

wchar_t Buffer[100];
int err = _snwprintf_s(Buffer, 100, 99, L"%.3f x %.3f y , %6.2f FPS", aMediaProperty.Video_Width, aMediaProperty.Video_Height, aMediaProperty.Video_FPS);
if (err <0){
 // Buffer to small fix it
}
else
SetWindowText(hLblVideoInfo, Buffer);
Fritz Westermann
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: IntToStr zu WCHAR

  Alt 5. Aug 2017, 12:43
Zu Deiner Lösung sag ich jetzt nix.........

Code:
#include <stdio.h>

wchar_t Buffer[100];
int err = _snwprintf_s(Buffer, 100, 99, L"%.3f x %.3f y , %6.3f FPS", aMediaProperty.Video_Width, aMediaProperty.Video_Height, aMediaProperty.Video_FPS);
if (err <0){
 // Buffer to small fix it
}
else
SetWindowText(hLblVideoInfo, Buffer);
Es wäre schön wenn du etwas gesagt hättest
Gut dann ich.. selbst erarbeitet. (Stolz)

Warum soll ich die MSVC.. hehehhe (VCL) verwenden wenn es nicht nötig ist?
Warum künstlich den Code um 250 KB und hoch vergrößern wenn es auch statisch zu lösen ist.
Ok ist nicht schön aber NONVCL oops meine natürlich NONMSVC.

Aber Danke für deinen Lösungsansatz.
Würde gerne wissen wie sich deine Lösung zusammen setzt.
Also die Formatierung.

Auch in C++ kann man eine EXE von 3 MB und mehr erstellen es geht aber auch in 64 KB das ist kein Witz,

Zitat:
warning C4477: "_snwprintf_s": Die Formatzeichenfolge "%.3f" erfordert ein Argument vom Typ "double", das variadic-Argument "1" weist aber den Typ "int" auf.
warning C4477: "_snwprintf_s": Die Formatzeichenfolge "%.3f" erfordert ein Argument vom Typ "double", das variadic-Argument "2" weist aber den Typ "int" auf.
Code:
WCHAR* STRD(IN double N) {
    static WCHAR ws[128] = { 0 };
    swprintf(ws, strSize(ws), L"%f", N);
    return (WCHAR*)ws;
}
oder
Code:
WCHAR VideoInfo[MAX_PATH] = { 0 };
_snwprintf_s(VideoInfo, MAX_PATH, 259, L"%d x %d, %6.3f FPS", aMediaProperty.Video_Width, aMediaProperty.Video_Height, aMediaProperty.Video_FPS);
SetWindowText(hLblVideoInfo, VideoInfo);
ok glaube habe es verstanden.. Danke
Code:
WCHAR AudioProperty[MAX_PATH] = { 0 };
_snwprintf_s(AudioProperty, MAX_PATH, 259, L"%d Channel, %d SPS, %d BPS", aMediaProperty.Audio_Channels, aMediaProperty.Audio_Samplerate, aMediaProperty.Audio_BitsPerSample);
SetWindowText(hLblAudioProperty, AudioProperty);
gruss

Geändert von EWeiss ( 5. Aug 2017 um 13:51 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, 14:16
Zu deiner Lösung Emil:
Vom manuellen Importieren einer Runtime Funktion würde ich dringend abraten. Die C/C++ Kompiler haben aber allgemein auch nicht das "Delphi-Problem", dass das einfache Inkludieren einer Datei auf einmal die Größe des Kompilats exorbitant in die Höhe schießen lässt (in C/C++ gibt es keine inbuilt RTTI und unbenutzte Symbols packt der Linker eh in keinem Falle ins Kompilat) - da musst du dir also keinerlei Gedanken machen, wenn du Standard-Header einbindest.

Zur Lösung von Fritzew:
Hier sollte man evtl. noch drauf hinweisen, dass _snwprintf_s nicht im C-Standard vorhanden ist. Kompilieren klappt also nur mit MSVC. Sollte bei deinem aktuellen Projekt wohl aber kein Problem sein, da deine DLL ja eh Windows-spezifisch ist (wobei man durchaus auch mit CLang und einigen anderen Compilern für Windows Targets compilen könnte, wenn man denn will).
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, 14:33
Zu deiner Lösung Emil:
Vom manuellen Importieren einer Runtime Funktion würde ich dringend abraten. Die C/C++ Kompiler haben aber allgemein auch nicht das "Delphi-Problem", dass das einfache Inkludieren einer Datei auf einmal die Größe des Kompilats exorbitant in die Höhe schießen lässt (in C/C++ gibt es keine inbuilt RTTI und unbenutzte Symbols packt der Linker eh in keinem Falle ins Kompilat) - da musst du dir also keinerlei Gedanken machen, wenn du Standard-Header einbindest.

Zur Lösung von Fritzew:
Hier sollte man evtl. noch drauf hinweisen, dass _snwprintf_s nicht im C-Standard vorhanden ist. Kompilieren klappt also nur mit MSVC. Sollte bei deinem aktuellen Projekt wohl aber kein Problem sein, da deine DLL ja eh Windows-spezifisch ist (wobei man durchaus auch mit CLang und einigen anderen Compilern für Windows Targets compilen könnte, wenn man denn will).
Danke für die Infos..
Zu meiner Lösung
Ich war halt Stolz das ich es selbst ohne fremde Hilfe geschafft habe das Problem zu lösen wenn auch nicht auf die feine art.

Diese von Fritzew gefällt mir natürlich besser und kompilieren lässt es sich auch. (Header dafür war vorher schon eingebunden)
So habe ich zumindest gelernt wie man einen String in C++ Formatiert das kommt ja immer wieder vor.

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 22:06 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