Entwickler-Ecke

Windows API - Abfrage des Betriebssystems ?


Hochhaus - So 22.12.13 19:02
Titel: Abfrage des Betriebssystems ?
Hallo allerseits !

kann mir jemand sagen, wie man das Betriebssystem mit einem kurzen Delphi-Programm ermittelt. Es sollte für alle Windows-Versionen ab Win95 funktionieren. (95, NT, 98, 2000, ME, XP, Vista, 7 und 8 / 8.1)

Gibt es solchen Code evtl. hier irgendwo im Forum ?


Vielen Dank für jede Hilfe !

Hochhaus


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 23.12.2013 um 00:19


Mathematiker - So 22.12.13 19:08

http://www.entwickler-ecke.de/viewtopic.php?t=109142&start=0&postorder=asc&highlight=windowsversion

Beste Grüße
Mathematiker


Delphi-Laie - So 22.12.13 19:17

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
kann mir jemand sagen, wie man das Betriebssystem mit einem kurzen Delphi-Programm ermittelt. Es sollte für alle Windows-Versionen ab Win95 funktionieren. (95, NT, 98, 2000, ME, XP, Vista, 7 und 8 / 8.1)

Gibt es solchen Code evtl. hier irgendwo im Forum ?


Auch die Delphipraxis ist voller Diskussionen und Quelltexte zu dieser Thematik. Einfach mal die Mühe des Suchens machen (die meiste Arbeit dabei übernimmt dabei ohnehin der "Mikrochip aus Taiwan").


Delete - So 22.12.13 20:34

Schau hier, das ist aktueller, enthält aber leider auch Fehler...:
http://www.delphi-treff.de/tipps/system/systemeigenschaften/windows-version-ermitteln/

Hier kann man sich sein Testprogramm selber zusammen basteln:
http://delphidabbler.com/articles?article=23&part=2

Für den Code:
http://creativecommons.org/licenses/by-nc-sa/2.5/


Delphi-Laie - So 22.12.13 21:36

Wäre noch zu detaillieren, welche Bitanzahl das Betriebsprogramm hat. Auch dafür gibt es verschiedene Möglichkeiten, so über die Bitanzahl eines Pointers oder diese Funktion:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function IsWOW64(MyHandle:THandle):Boolean;
var IsWow64Result:pBOOL;
Is_Wow64Process:function(Handle:THandle;var Res:pBOOL):BOOL;stdcall;
begin
Is_Wow64Process:=GetProcAddress(GetModuleHandle('kernel32'),'IsWow64Process');
if Assigned(Is_Wow64Process) then
  begin
  Is_Wow64Process(MyHandle,IsWow64Result);
   Result:=Boolean(IsWow64Result)
   end
else Result:=False
end;


Edit: Das ist falsch, die o.g. Funktion dient dazu, festzustellen, ob unter Windows 64 Bit ein Prozeß 32 oder 64 Bit hat. Nimmt man aber einen "Systemprozeß", so kann man damit natürlich doch die Bitanzahl des Betriebsprogrammes feststellen. Sie arbeitet auch unter 32 Bit.


Delete - So 22.12.13 22:41

Abfrage des Betriebssystems mit WMI:

Ausgabe - Beispiele:
Microsoft Windows 8.1 - 6.3.9600
Microsoft Windows 8 - 6.2.9200
Microsoft Windows 7 Ultimate - 6.1.7601



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
Procedure MM(s: String);
begin
 Form1.Memo1.lines.add(s);
end;

//uses  ActiveX, Comobj,
function GetWin32_OSNameVersion : string;
var
  objWMIService : OLEVariant;
  colItems      : OLEVariant;
  colItem       : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;

  function GetWMIObject(const objectName: String): IDispatch;
  var
    chEaten: Integer;
    BindCtx: IBindCtx;
    Moniker: IMoniker;
  begin
    OleCheck(CreateBindCtx(0, bindCtx));
    OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
    OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
  end;

begin
  try
    objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
    colItems      := objWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem','WQL',0);
    oEnum         := IUnknown(colItems._NewEnum) as IEnumVariant;
    if oEnum.Next(1, colItem, iValue) = 0 then
      result := Format('%s - %s',[colItem.Caption, colItem.Version]);
  except
    result := '?'
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MM(GetWin32_OSNameVersion);
end;


Andreas L. - Mo 23.12.13 04:39

:arrow: TWindowsVersionInfo [http://www.delphipraxis.net/97999-%5Bkompo%5D-twindowsversionsinfo-kompo-zur-windowserkennung.html]


Hochhaus - Mo 23.12.13 07:52

user profile iconAndreas L. hat folgendes geschrieben Zum zitierten Posting springen:
:arrow: [url=http://www.delphipraxis.net/97999-%5Bkompo%5D-twindowsversionsinfo-kompo-zur-windowserkennung.html]TWindowsVersionInfo[/url]


Da muss man sich aber anmelden. Was kostet dort die Benützung der Delphi-Praxis-Seite ? Da es viele versteckte Kostenfallen gibt im Internet, stelle ich diese "dumme" Frage.


Hochhaus


jaenicke - Mo 23.12.13 07:58

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
Da muss man sich aber anmelden. Was kostet dort die Benützung der Delphi-Praxis-Seite ? Da es viele versteckte Kostenfallen gibt im Internet, stelle ich diese "dumme" Frage.
Entwickler-Ecke, Delphipraxis und Delphi-Treff veranstalten z.B. gemeinsam die Delphi-Tage und viele sind in zwei oder drei der Foren parallel angemeldet, so auch ich. Kosten gibt es dort genauso wenig wie hier. ;-)


Delphi-Laie - Mo 23.12.13 09:42

Meine Äußerungen zur Bitanzahl des Betriebsprogrammes gestern abend waren wohl doch nicht so ganz richtig.

Die Größe des Pointers kann vermutlich nur innerhalb des jeweiligen Programmes bestimmt werden. Klar, daß ein 64-Bit-Programm nur unter einem 64-Bit-Betriebsprogramm läuft (laufen kann) und mithin mit seinem größeren Pointer die 64 Bit anzeigt. Diese Methode scheitert jedoch, wenn man ein 32-Bit-Programm unter einem 64-Bit-Betriebsprogramm startet. Das kann auf diese Weise wohl auch in der 64-Bit-Umgebung nur 32 Bit erkennen, weil ihm nur eine 32-Bit-Umgebung bereitgestellt ("vorgetäuscht") wird, das sog. 32-Bit-Subsystem.

Soeben unter Windows 7 64 Bit ausprobiert: Mein Programm "Prozesse" kann unter Windows 64 Bit sowohl als 32- als auch als 64-Bit-Compilat zwischen 32- und 64-Bit-Prozessen unterscheiden, dazu benutzte ich die oben schon gezeigte Funktion.

Edit: Und noch eine Korrektur: IsWow64Process bestimmt nur, ob ein 32-Bit-Prozeß im 32-Bit-Subsystem läuft. Kann man also auf das eigene Programm anwenden und so die Bitanzahl des Betriebsprogrammes ermitteln, sofern es ein 32-Bit-Compilat ist. Aber das weiß man ja zum Glück vorher, wieviel Bit das eigene Compilat hat.

Wenn man sich nur Monate mit einer Sache nicht beschäftigt, ist schon wieder die Hälfte davon vergessen.

Edit 2: Da die Betriebsprogrammabfrage ja möglichst universell sein soll(te), ist ein 32-Bit-Compilat die erste Wahl und damit die genannte Funktion, auf das eigene Programm angewandt, verwendbar.


Hochhaus - Do 26.12.13 10:01

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Abfrage des Betriebssystems mit WMI:




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
Procedure MM(s: String);
begin
 Form1.Memo1.lines.add(s);
end;

//uses  ActiveX, Comobj,
function GetWin32_OSNameVersion : string;
var
  objWMIService : OLEVariant;
  colItems      : OLEVariant;
  colItem       : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;

  function GetWMIObject(const objectName: String): IDispatch;
  var
    chEaten: Integer;
    BindCtx: IBindCtx;
    Moniker: IMoniker;
  begin
    OleCheck(CreateBindCtx(0, bindCtx));
    OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
    OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
  end;

begin
  try
    objWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
    colItems      := objWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem','WQL',0);
    oEnum         := IUnknown(colItems._NewEnum) as IEnumVariant;
    if oEnum.Next(1, colItem, iValue) = 0 then
      result := Format('%s - %s',[colItem.Caption, colItem.Version]);
  except
    result := '?'
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MM(GetWin32_OSNameVersion);
end;





Hinter Windows Vista kommt ein kleines, schwarzes Rechteck. Was hat das zu bedeuten ? Wieso erscheint nicht, ob es sich um die 32-bit oder 64-bit Variante handelt ? { Bin ich zu anspruchsvoll ? )


Hochhaus


Delete - Do 26.12.13 12:09

Man kann abfragen, ob z.B. ein bestimmter Ordner (SysWOW64) vorhanden ist oder eine bestimmte Funktion.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724405%28v=vs.85%29.aspx


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Function GetSystemWow64Directory(lpBuffer:LPTSTR;uSize:Uint):uint; stdcall
external 'Kernel32.dll' name 'GetSystemWow64DirectoryW';

Function IsSysWOW64:Boolean;
var Buffer:Array[0..max_path] of Char;
begin
Result:=false;
If GetSystemWow64Directory(Buffer,max_path)<>0 Then result:=true;
end;

// Use: CheckBox2.checked:=   IsSysWOW64;

-----------

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
function Is64BitOS: Boolean;
type
  TIsWow64Process = function(Handle:THandle; var IsWow64 : BOOL) : BOOL; stdcall;
var
  hKernel32 : Integer;
  IsWow64Process : TIsWow64Process;
  IsWow64 : BOOL;
begin
  Result := False;
  hKernel32 := LoadLibrary('kernel32.dll');
  if hKernel32 = 0 then RaiseLastOSError;
  try
    @IsWow64Process := GetProcAddress(hkernel32, 'IsWow64Process');
    if Assigned(IsWow64Process) then begin
      if (IsWow64Process(GetCurrentProcess, IsWow64)) then begin
        Result := IsWow64;
      end
      else RaiseLastOSError;
    end;
  finally
    FreeLibrary(hKernel32);
  end;
end;

// Use: CheckBox1.checked:=    Is64BitOS;


Hochhaus - Do 26.12.13 13:08

Danke !! Es bleibt die Frage, wieso hinter Windows Vista ein kleines, schwarzes Quadrat erscheint. Funktioniert Dein Quellcode auch bei XP und 2000 etc. ?

Hochhaus


jaenicke - Do 26.12.13 13:16

Welches Zeichen ist das denn? Vielleicht 10 oder 13? Versuch doch mal ein Trim.


Hochhaus - Do 26.12.13 13:31

Keine Ahnung, welches ANSI-Zeichen das ist. Ich müsste den String zerlegen und prüfen . Heute komme ich aber nicht mehr dazu.

Danke !

Hochhaus


Delete - Do 26.12.13 14:06

Minimum supported client: Windows XP [desktop apps only]
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724405%28v=vs.85%29.aspx

Für WINDOWS-bezogene Fragen findet man leicht Antworten:

Googeln nach "msdn funktionswort"


Fuchs HP - Fr 27.12.13 15:07

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:


Ich habe nicht den Eindruck, dass Du Programme entwickeln kannst!
Lebst Du eigentlich in einer Diktatur, wo der Gebrauch von GOOGLE verboten ist?


Hi

bin neu hier ! Aber wie mir scheint, ist der Umgangston ziemlich rüde. Sowas schreibt man doch nicht, auch dann nicht, wenn es stimmen sollte ! Wer kennt schon einen Mitmenschen ganz genau ?

Fuchs Hanspeter


jasocul - Fr 27.12.13 15:32

Ist zwar OT, aber:

Hallo user profile iconFuchs HP,
erstmal Willkommen in der EE.

Der erste Satz ist tatsächlich etwas hart. Anfänger benötigen Lernzeit. Allerdings ist user profile iconHochhaus laut Profil Physiker und 1960 geboren. Da darf man schon etwas mehr erwarten.

Der zweite Satz ist vermutlich aus Frust entstanden, da es User gibt, die schlicht zu faul sind, mal selbst zu googeln und lieber einfach hier fragen. Da das häufiger vorkommt, sind die helfenden User manchmal einfach nur noch genervt. Und dann entstehen solche Frust-Kommentare.

Schreibt man aber nichts, ändern sich solche User nicht.

Wer Einsatz zur Eigen-Kompetenz und -Initiative zeigt, wird auch so freundlich behandelt, wie du es dir vorstellst.


Hochhaus - Fr 27.12.13 15:53

Hallo,

nun möchte ich mich auch dazu äussern: Ich habe durchaus mehrere Projekte geschafft, auch wenn ich manchmal mehr gefragt habe, als unbedingt nötig gewesen wäre. Mit der Programmiersprache selbst habe ich weniger Probleme - eher mit den Windows API - Funktionen (Ich kann weder C noch C++ etc.). Und da helfen mir die Dokumentationen von Microsoft nicht gerade sehr viel weiter. Und auch mit Graphik-Ausgaben kenne ich mich nicht gut aus. Das Quadratwurzelprogramm, das ich einmal geschrieben hatte, benötigt nur Rechenbefehle.

Alles in allem kurz gesagt: Wenn es um reinen Rechencode geht, weiss ich meistens eine Lösung. Systemnahe Programmierung hingegen beherrsche ich nicht - das ist so.


Hochhaus


Delphi-Laie - Fr 27.12.13 16:23

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
Funktioniert Dein Quellcode auch bei XP und 2000 etc. ?

Hochhaus


Wieso willst Du das wissen?
Ich habe nicht den Eindruck, dass Du Programme entwickeln kannst!

Minimum supported client: Windows XP [desktop apps only]
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724405%28v=vs.85%29.aspx


Ausgerechnet Winzigweich - die Höhle des Löwen - als Quelle heranzzuziehen, sollte man ganz vorsichtig sein, von den übrigen Pöbeleien des teilzitierten Beitrages mal ganz abgesehen.

Winzigweich setzt nämlich seit Jahr und Tag dreisterweise die "Minum-supported-...-"-Einträge schleichend einfach so herauf. Und da die das besser wissen, ist das nichts anderes als eine Lüge, aber mit der Ehrlichkeit war diese "Softwareschmiede" noch nie liiert.

Ich fand mal eine chinesische Seite - ich finde sie just leider nicht wieder - in der die Minimum-Anforderungen noch korrekt dargelegt waren, sie war offensichtlich rechtzeitig von den MSDN-Seiten dort hinüber kopiert ("gespiegelt") worden.

Die meisten Funktionen gehen nämlich auf die 9x-, 3x- oder gar noch frühere Windows-Zeiten zurück, manche sogar unverändert (abgesehen von der Bitanzahl-Anpassung).

Bei einer 64-Bit-relevanten Funktion mag die Minimum-Angabe aber tatsächlich stimmen, denn Windows XP 64 Bit war das erste 64-Bit-Windows, das man halbwegs ernstnehmen konnte (halbwegs, weil die folgenden 64-Bit-Varianten immer besser wurden, und davor, das Windows 2000 mit 64 Bit, falls es das wirklich einmal gegeben haben soll, wirklich nur eine Experimentalversion war).


jaenicke - Fr 27.12.13 17:45

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Winzigweich setzt nämlich seit Jahr und Tag dreisterweise die "Minum-supported-...-"-Einträge schleichend einfach so herauf. Und da die das besser wissen, ist das nichts anderes als eine Lüge, aber mit der Ehrlichkeit war diese "Softwareschmiede" noch nie liiert.
Da steht ja auch "Minimum supported client", und Windows 2000 wird nun einmal nicht mehr unterstützt. :nixweiss:


Delphi-Laie - Fr 27.12.13 19:11

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Winzigweich setzt nämlich seit Jahr und Tag dreisterweise die "Minum-supported-...-"-Einträge schleichend einfach so herauf. Und da die das besser wissen, ist das nichts anderes als eine Lüge, aber mit der Ehrlichkeit war diese "Softwareschmiede" noch nie liiert.
Da steht ja auch "Minimum supported client", und Windows 2000 wird nun einmal nicht mehr unterstützt. :nixweiss:


Rein grammatikalisch magst Du da rechthaben, Sebastian, allerdings verstand ich es bis dato so, daß es das minimale / "kleinste" Betriebsprogramm ist, das diese Funktion bereitstellt. Und auch nur diese Information ist die eigentlich relevante und sinnvolle, denn welches Betriebsprogramm noch zu unterstützen MS sich herabläßt und welches gerade so noch "supported" wird, kann man wahrlich an anderen, leichter erreichbaren Stellen bei MS & Co. nachlesen.


jaenicke - Fr 27.12.13 21:24

Für die Wartung so alter Programme, die noch Windows 2000 unterstützen müssen, braucht man heute ohnehin spezielle alte Versionen der meisten Entwicklungsumgebungen, spezielle alte Testumgebungen usw., d.h. man muss ohnehin einen hohen Aufwand betreiben. Und dann kann man ja problemlos auch die alten SDK Hilfen installiert vorhalten, wie auch schon in einem anderen Thread erwähnt, in denen auch die uralten Versionen noch berücksichtigt werden.

Die im MSDN angegebene Version ist die minimale Version, die diese Funktion enthält und noch von Microsoft unterstützt wird.


Hochhaus - Sa 28.12.13 12:44

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Für die Wartung so alter Programme, die noch Windows 2000 unterstützen müssen, braucht man heute ohnehin spezielle alte Versionen der meisten Entwicklungsumgebungen (...)


Deswegen habe ich Delphi 6 PE behalten und nicht weggeworfen nach dem Upgrade auf XE2 !

Hochhaus


jaenicke - Sa 28.12.13 13:07

Bei Delphi XE2 ist doch Delphi 7 dabei, sofern du Professional oder höher hast. Das wäre dann sinnvoller als die alte Personal.


Hochhaus - Sa 28.12.13 15:40

Ich habe in der Tat XE2 Professional. Bisher habe ich aber nicht gemerkt, dass Delphi 7 mit dabei ist. Ich werde mich mal auf die Suche machen. Die Delphi XE2 - Version, die ich habe, habe ich nicht auf DVD. Ich habe nur einen Lizenz-Schlüssel erhalten im Internet, und musste alles downloaden.

Hochhaus


jaenicke - Sa 28.12.13 16:02

Dann ist es leider zu spät. Heute kannst du dir nur noch die Lizenzen für die alten Delphiversionen holen, wenn du XE5 hast...
Nachdem du es gekauft hast, hättest du dir die Lizenzen für Delphi 7, 2007, 2009, 2010 und XE hier holen können:
http://www.embarcadero.com/xe2-earlier-versions
Das stand auch (wie jetzt bei XE5 [http://www.embarcadero.com/de/products/rad-studio/previous-versions]) auf der Produktwebseite.

Du kannst höchstens versuchen es bei XE5 einzugeben (wird vermutlich nicht gehen) oder mit Hinweis auf die Verwendung von D6 PE nett beim Support anfragen...


Delphi-Laie - Sa 28.12.13 16:11

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Für die Wartung so alter Programme, die noch Windows 2000 unterstützen müssen, braucht man heute ohnehin spezielle alte Versionen der meisten Entwicklungsumgebungen (...)


Deswegen habe ich Delphi 6 PE behalten und nicht weggeworfen nach dem Upgrade auf XE2 !


Gegenfrage: Wer wirft denn überhaupt Programme (bzw. deren Datenträger) weg?

Sogar DOS- und 16-Bit-Windows-Programme inkl. der damit erstellten Datendateien und der eigentlichen Betriebsprogramme liegen bei mir fein säuberlich archiviert auf gebrannten Datenträgern, auch wenn ich es seitdem kaum jemals nochmal anrührte.


Hochhaus - Sa 28.12.13 16:35

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:



Gegenfrage: Wer wirft denn überhaupt Programme (bzw. deren Datenträger) weg?



Ich kenne da viele, z.Bsp. meinen Bruder. Ich selbst habe auch noch DOS-Disketten, Win 3.1 / 95 / 98 etc. und werfe sie sicher nicht weg. Auch wenn sie auf der heutigen Hardware kaum noch funktionieren.


Delphi-Laie - Sa 28.12.13 16:48

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:



Gegenfrage: Wer wirft denn überhaupt Programme (bzw. deren Datenträger) weg?



Ich kenne da viele, z.Bsp. meinen Bruder. Ich selbst habe auch noch DOS-Disketten, Win 3.1 / 95 / 98 etc. und werfe sie sicher nicht weg. Auch wenn sie auf der heutigen Hardware kaum noch funktionieren.


Wie ich schon vor Monaten schrieb: Disketten und auch ihre Laufwerke altern leider auch bei völliger Nichtbenutzung spürbar. Gerade die von mir so geschätzten "Waschlappen" (die echten, auch äußerlich biegsamen "floppy discs"), die mit 5,25 Zoll und besserer Zuverlässigkeit als die kleineren, späteren, ernüchterten mich inzwischen mitsamt ihren vergleichsweise klobigen, dafür aber robusten Laufwerken.

CDs hingegen enttäuschten mich bis auf eine Ausnahme bisher nie.


jaenicke - Sa 28.12.13 17:12

user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
CDs hingegen enttäuschten mich bis auf eine Ausnahme bisher nie.
Da hatte ich bisher auch nur mit den billigen Rohlingen Probleme, die meine Eltern von Discountern geholt hatten. Meine eigenen sind auch nach 10 Jahren alle noch problemlos lesbar.

Die Originaldisketten von Windows 2 und 3 funktionieren bei mir aber auch noch alle problemlos.


Hochhaus - Sa 28.12.13 17:38

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Welches Zeichen ist das denn? Vielleicht 10 oder 13? Versuch doch mal ein Trim.


Es ist Zeichen Nr. 153 ! Als ASCII interpretiert ein ö, als ANSI ein Tm ? Was bedeutet dies ?

Hochhaus


Delphi-Laie - Sa 28.12.13 17:47

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Welches Zeichen ist das denn? Vielleicht 10 oder 13? Versuch doch mal ein Trim.


Es ist Zeichen Nr. 153 ! Als ASCII interpretiert ein ö, als ANSI ein Tm ? Was bedeutet dies ?


Die Antwort auf die Frage steckt bereits im Satze zuvor: Das Byte 153 ist in Ascii-Codierung ein ö, in Ansi-Codierung ein Tm.


Hochhaus - Sa 28.12.13 17:52

Ich glaube jetzt, des Rätsels Lösung zu wissen: Das Zeichen steht für Windows Vista TM ! Bei der Stringausgabe wird es lediglich verkehrt dargestellt !


Hochhaus

//Nachtrag: Die Schrift war zu klein, die Auflösung schlecht - daher die falsche Darstellung. Ein Vergrössern der Schrift auf 12-Punkt war die Problemlösung.