Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie Erkenne ich den Unterschied zwischen Unix und Win32 file (https://www.delphipraxis.net/83094-wie-erkenne-ich-den-unterschied-zwischen-unix-und-win32-file.html)

Corpsman 27. Dez 2006 13:19


Wie Erkenne ich den Unterschied zwischen Unix und Win32 file
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Alle Miteinand.

Ich habe Ein Riesen Problem.

In meinem Balanced spiel, wie auch in sehr vielen anderen Programmen von mir mus ich immer wieder dateien laden.

Da ich als Win98 User aber ein anderes Dateiformat erzeuge wie die WinXP user erzeugt das immer wieder riesen Probleme.

Laut meinem HexEditor werden die Einen dateien in Unix und die Anderen in Dos gespeichert.

Der Unterschied ist mir Klar einmal ist CRLF und einmal nur LF aber wie erkenne ich das im Code.

bisher lade ich meine Files immer mit :
Delphi-Quellcode:
  var f: Textfile;
begin
assignfile(f,'C:\bla.txt');
reset(f);
..

closefile(f);
Das Prob ist nu das er die Unix Dateien so nicht lädt, da diese ja schlieslich nur aus 1 Zeile bestehen. Weil zumindes mein Rechner das CRLF braucht.

Und nu hatte ich auch zum ersten mal den Fall das ein WinXP Rechner den selben Fehler hatte. Was nu echt Schei.. ist.

Kann mir da einer von euch helfen ?

Als Sample habe ich euch mal die User.cfg von meinem Balanced in Unix und einmal in Win32 angehängt.

ascotlx 27. Dez 2006 13:26

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
Mohoin Corpsman,

ab und zu hole ich mir Dateien von UNIX/Linux Maschinen um diese zu verarbeiten. Dazu
benutze ich folgende Prozedur. Wie Du siehst ersetzte ich das LF(#10) durch CRLF(#13#10).

Delphi-Quellcode:
//==============================================================================
// UNIX Datei in das Windows Format konvertieren
procedure Unix2Win(const AFileName: String);
var fFile : TStringList;
    i : integer;
begin
  fFile:=TStringList.Create;
  try
    fFile.LoadFromFile(AFileName);
    for i := 0 to fFile.Count -1 do
      fFile[i] := StringReplace(fFile[i], #10, #13#10,[rfReplaceAll]);
      fFile.SaveToFile(AFileName);
  finally
    fFile.Free;
  end;
end;
Ich hoffe es hilft Die weiter...

Gruß
ascotlx

Corpsman 27. Dez 2006 13:33

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
Das hilft mir ;)

nur mus ich noch rauskriegen ob die gegebene File in Linuxformat ist.

weil wenn ich die Konvertierung Pauschal immer machen lass gehts net.

malo 27. Dez 2006 13:34

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
@ascotlx: Probleme macht diese Funktion jedoch wenn du ein Windows-File erwischst. Dort steht dann nämlich #13#13#10

Ratte 27. Dez 2006 13:55

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
zähl die #10 und die #13 und vergleich die zahlen. Oder definiere im dateiformat als erste zeile einen zeilumbruch gefolgt von z.B. einem 'A'.
mfg,
Ratte

ascotlx 27. Dez 2006 13:58

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
@malo

ok ... bei meinen Programmen, weiss ich woher ich die Dateien habe(hole).
Aber vielleicht hilft das ja weiter....

Delphi-Quellcode:
  if Pos(#13#10, str) > 0 then
Gruss
ascotlx

Christian Seehase 27. Dez 2006 14:36

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
Moin ascotlx,

die Schleife kannst Du Dir sparen.
Einmal die Datei in eine TStringList laden und wieder speichern genügt.
TStringList passt die Zeilenumbrüche automatisch an.

[EDIT]
Zumal in der Schleife gar nichts gemacht wird, da die einzelnen Zeilen keine Umbrüche enthalten.
[/EDIT]

ascotlx 27. Dez 2006 16:58

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
ups, da bin ich wohl einem Irrtum erlegen .... (mist).

[EDIT]
... fall auf die Nase ... :coder2:
[/EDIT]

Corpsman 27. Dez 2006 17:21

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
@Christian Seehase

Du bist Echt Gut.

Zugegeben es ist nicht gerade die Feine Englische, Aber es funktioniert 1a.

thx.

ascotlx 27. Dez 2006 17:56

Re: Wie Erkenne ich den Unterschied zwischen Unix und Win32
 
@corpsman
wie prüfst Du jetzt, oder wandelst Du einfach ?? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Seite 1 von 4  1 23     Letzte »    

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