AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Type _OSVERSIONINFOA - Verständnisproblem

Type _OSVERSIONINFOA - Verständnisproblem

Ein Thema von Mazel · begonnen am 8. Mai 2007 · letzter Beitrag vom 10. Mai 2007
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 16:25
Zitat von OldGrumpy:
Kleines Beispiel: Wenn ich ein japanisches Windows nehme, dann sind da API-Aufrufe ohne Suffix generell die Wide-Varianten.
Falsch! Der Compiler bzw. die compilierte Exe "erkennt" nicht das es jetzt ein japanisches Windows ist auf dem es läuft. Die Bindung ist immer auf die Ansi-Version der API-Funktion/Struktur.

Dort gibt es auch Ansi und Wide-Versionen. Jedoch ist die Ansi-Codepage (wie auch auf chinesischen Windows) so das mehrere Ansi-Characters ein Zeichen darstellen! Damit funktioniert jeder Code nicht mehr korrekt der hart Strings abschneidet oder einzelne Characters aus Strings ändert. Ein String der z.B. 30 1-Byte-Characters beinhaltet ist letztendlich nur 10 (Wide-)Characters lang.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 16:35
Vielleicht meinte OldGrumpy ja, dass ein japanisches Kompilat die Wideversionen verwenden würde.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 16:41
@DGL-luke: Ja, letzteres Je nach Compilerumgebung kann der "normale" API-Name entweder auf die A(nsi)- oder W(ide)-Variante gemappt sein. Bin heute irgendwie nicht ganz bei der Sache

Edit (2x): Eigen-DAU korrigiert
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 16:43
Zitat von DGL-luke:
Vielleicht meinte OldGrumpy ja, dass ein japanisches Kompilat die Wideversionen verwenden würde.
Dazu müßte ja der Quellcode der VCL schon soweit vorbereitet sein das String als Widestring umgesetzt wird und es nicht an Millionen Stellen kracht. Und das kann ich mir beim besten Willen für das Japanische Delphi nicht vorstellen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#15

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 17:11
@OldGrumpy, hast du dich hiermit
Zitat:
Ja, letzteres Je nach Compilerumgebung kann der "normale" API-Name entweder auf die A(nsi)- oder W(ide)-Variante gemappt sein.
auf meine Frage bezogen?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 17:24
Nein, meine Antwort da bezog sich auf DGL-luke, aber generell würde ich dazu tendieren, die W-Apis zu nehmen. Auf Kernelebene ist der Umstieg schon länger komplett vollzogen, insofern werden die Ansi-Apis praktisch nur noch der Kompatibilität wegen mitgeführt.

Edit: Eigen-DAU korrigiert (*sigh*)
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 17:26
Ich dementiere heftigst: Ich bin nicht Luckie!
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 9. Mai 2007, 17:50
ARGH! *schäm*

Ich editiere da oben jetzt nochmal alles Mea culpa
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#19

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 10. Mai 2007, 08:41
So ganz klar ist die Sache für mich aber immer noch nicht, da ich nicht so oft die API verwende bzw. ich mich noch nicht so intensiv beschäftigt habe. Wenn ich eine Funktion zum ermitteln der Windowsversion schreibe, würde die Deklaration des Typen so aussehen, wenn ich die windows.pas nutzte:
Delphi-Quellcode:
function GetWinVer : string;
var
  OSVersionInfo : TOSVersionInfo;

begin
  ZeroMemory(@OSVersionInfo, SizeOf(TOSVersionInfo));
  OSVersionInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  if GetVersionEx(OSVersionInfo) then
   begin
   end;
end;
Das würde doch der Ansi-Variante entsprechen ebenso der Aufruf der Funktion GetVersionEx.
Wenn ich das ganze kompiliere, verarbeite ich doch nur die Ansi-Variante. Demnach müsste das entstande Programm Probleme mit sich bringen, da der Typ _OSVERSIONINFOA verarbeitet und die API Funktion GetVersionExA gebraucht wird aber bei einem Rechner mit nur noch Wide-Version nicht vorhanden ist? Wenn ich die Funktion und den Typ selber in die Unit aufnehme, kann ich die Wide-Version verwenden aber eben nicht wenn ich die Windows.pas einbinde.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Type _OSVERSIONINFOA - Verständnisproblem

  Alt 10. Mai 2007, 09:35
Bisher ist es bei Windows immer so, dass noch ewig lange diverse Rattenschwänze mitgeschleppt werden, um Abwärtskompatibilität zu sichern. (In Delphi gibts z.B. auch immer noch WinExec(), ein Überbleibsel aus Zeiten von Windows 3.x) Wenn 2011 wirklich der Vista-Nachfolger in den Startlöchern steht, womöglich mit .NET 4.0 *g* dann würde ich mich langsam aber nicht mehr darauf verlassen. Wer rechtzeitig umsteigt, hat weniger Probleme - sehr schön sehen konnte man das an der Treibersituation für 64-Bit-Systeme. XP x64 und auch Vista x64 quälen einen immer noch recht derbe durch nicht verfügbare Treiber für allerlei Hardware. Bei den Treibern bleibt den Herstellern nämlich gar nichts anderes übrig, als sich an den neuen Features zu orientieren, die 64-Bit-Varianten brauchen bei Kerneltreibern auch native 64-Bit-Treiber. Und obwohl Vista schon ewig lange für Entwickler verfügbar war, scheinen etliche Hersteller doch wohl TOTAL überrascht worden zu sein, dass Vista jetzt auf einmal in den Läden steht. Hoppla!
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz