![]() |
AW: TStrings maximale Länge
Zitat:
Du brauchst hier einen Hex-Editor und musst je nach codiertung der Textdatei nach $00 bzw. $0000 suchen. |
AW: TStrings maximale Länge
Zitat:
Zudem wird die Datei auch dahingehend analysiert (soweit möglich) um welche Codierung es sich handelt. |
AW: TStrings maximale Länge
Ok, das wars,...
Mit TexPad habe ich die #0 gefunden,... Danke für Eure Hilfe !!!! |
AW: TStrings maximale Länge
Zitat:
|
AW: TStrings maximale Länge
Shit, und ich hab noch etwas auf die Schnelle geprogt. Wir sind hier in einem Programmierforum, ist doch lächerlich, dass wir fremde Programme für sowas brauchen:
Delphi-Quellcode:
Zwar zusammengebastelt, aber wer behauptet, dass es immer ein Programm sein muß.
function LoadStringFromFile(sInFile: String; var sFileString: String): Boolean;
var FileStream: TFileStream; begin Result := False; if not FileExists(sInFile) then Exit; FileStream := TFileStream.Create(sInFile, fmOpenRead); try if FileStream.Size <> 0 then begin SetLength(sFileString, FileStream.Size); FileStream.Read(sFileString[1], FileStream.Size); Result := True; end; finally FileStream.Free end; end; procedure TForm1.Button1Click(Sender: TObject); const SuchZeichen = #0; var s: String; k: Integer; begin with OpenDialog1 do begin if Execute then begin if not LoadStringFromFile(FileName, s) then begin MessageDlg('Keine Datei geladen', mtError, [mbOK], 0); Exit; end; k := 0; while Pos(SuchZeichen, s) > 0 do begin s[Pos(SuchZeichen, s)] := '~'; Inc(k); end; ShowMessage(Format('Zeichen "%s" %d mal gefunden.', [SuchZeichen, k])); end; end; end; |
AW: TStrings maximale Länge
Zitat:
|
AW: TStrings maximale Länge
Wieso das?
Edit: Achso |
AW: TStrings maximale Länge
Du könntest natürlich auch endlich mal Code zeigen (wie dir ständig irgendwo gesagt wird)
und eventuell die problembehafte Datei anhängen. Entweder zu zeigst etwas oder du höst auf das, was dir gesagt wurde. Anonsten kann dir einfach keiner helfen. @Popov: Ja, dein Delphi ist uralt, aber dennoch kann man mal versuchen seine Codes "ordentlich" zu erstellen. sFileString muß ein AnsiString sein, wenn du eine Datei Byteweise dort reinkopierst, oder du mußt SetLength an SizeOf(Char) anpassen. (seit über 3 Jahren rennen hier viele mit einem UnicodeDelphi rum und bei denen würden deine Codes sonst abrauchen) [edit] zu langsam :oops: PS: Hätten mehr Leute schon immer auf die richtgen Typen geachtet, hätte es wohl keinerlei Probleme bei der Umstellung auf Unicode gegeben. |
AW: TStrings maximale Länge
himitsu, ich helfe gerne, auch mit Beispielen. Das bedeutet aber nicht, dass ich immer alles neu entwickele. Oft gucke ich in einem meiner alten Programme nach und hole mir hier und da eine Prozedur oder eine Funktion raus. Und gelegentlich ist sie nicht mehr Up-To-Date. Aber was soll ich sagen? Ist das ein Problem? Entweder es funktioniert oder es funktioniert nicht. Funktioniert es nicht, dann gibt es zwei Möglichkeiten: entweder bietet einer was besseres an oder der Code wird angepaßt. Wo ist das Problem? Nicht falsch verstehen, ich würde nie absichtlich einen fehlerhaften Code anbieten oder Fehler absichtlich einbauen, aber ich hab das was ich habe. Wenn das Beispiel nicht funktioniert, dann Pech. Das passiert schon mal bei Delphi. Die Standardtypen werden gelegentlich angepaßt und der Code funktioniert besser oder gar nicht mehr. Ich glaube der Typ String war mal 256 Zeichen lang, was ist er jetzt? So ist das leben. Ich werde mich jetzt nicht in Arbeit stürzen und alle meine Beispiele anpassen. Wenn ich mir ein neues Delphi besorge, meinetwegen. Und wenn gelegentlich meine Beispiele nicht klappen, dann gibt es so nette Kollegen wie euch die mich drauf hinweisen. Na und? Wenn es nicht funktioniert, dann muß man es anders machen. Ich für mich werde nicht auf Unicode umschalten wenn es für mich persönlich nicht nötig ist. Ich meine, keiner ändert seinen Unicode wenn ich nur 8 bit brauche.
|
AW: TStrings maximale Länge
Wie gsagt, du kannst gerne bei ANSI bleiben. Du mußt einfach nur AnsiString nehmen ... das funktioniert auch in D2009+ :zwinker:
Delphi-Quellcode:
Beim Ersten gibt es keine Zugriffsverletzung mehr, aber dafür wird dann aus deuschen Text bei Unicode schnell mal Chinesisch. :lol:
function LoadStringFromFile(sInFile: String; var sFileString: String): Boolean;
begin ... SetLength(sFileString, FileStream.Size div SizeOf(Char)); FileStream.Read(sFileString[1], Length(sFileString) * SizeOf(Char)); function LoadStringFromFile(sInFile: String; var sFileString: AnsiString): Boolean; begin ... SetLength(sFileString, FileStream.Size); FileStream.Read(sFileString[1], FileStream.Size); Darum wäre ANSI hier sogar richtig, da sich dabei das "Dateiformat" nicht verändert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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 by Thomas Breitkreuz