AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi SCHNELL: Erste 100 Zeichen aus Textdatei lesen

SCHNELL: Erste 100 Zeichen aus Textdatei lesen

Ein Thema von PeterPanino · begonnen am 23. Okt 2012 · letzter Beitrag vom 25. Okt 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#1

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 24. Okt 2012, 22:39
Wie kann man das type-casten?
Casten garnicht.



z.B. Delphi-Referenz durchsuchenTEncoding

Oder, wenn die internen Daten bitkompatibel sind, dann "kopieren" (Move)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 24. Okt 2012, 22:54
Ich erkenne leider nicht, wie man in dem obigen Beispiel mit TEncoding einen AnsiString in ein Char-Array umwandeln kann. Es geht ja darum, dass ReadBlock ein Char-Array erwartet, als Parameter aber nur ein AnsiString zur Verfügung steht.
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 24. Okt 2012, 23:11
Hast du dir meine Variante angeschaut?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 24. Okt 2012, 23:12
was Shima meinte war wohl

len := SR.ReadBlock(@Result[1], 0, X); Ich hatte eine identische Antwort fertig, habe sie aber nicht abgeschickt, da es bei mir nicht zuverlässig zum laufen kam, war abhängig vom Encoding der Datei und seltsamerweise auch vom Inhalt, irgendetwas an TStreamreader ist da etwas Voodoo.
Willst Du einen Binärvergleich fahren oder geht es nur um Textdateien (in einheitlicher Codierung) ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 24. Okt 2012, 23:39
was Shima meinte war wohl

len := SR.ReadBlock(@Result[1], 0, X); Ich hatte eine identische Antwort fertig, habe sie aber nicht abgeschickt, da es bei mir nicht zuverlässig zum laufen kam, war abhängig vom Encoding der Datei und seltsamerweise auch vom Inhalt, irgendetwas an TStreamreader ist da etwas Voodoo.
Willst Du einen Binärvergleich fahren oder geht es nur um Textdateien (in einheitlicher Codierung) ?
Es geht nur um Textdateien, aber das Encoding kann je nach Anwendersystem wohl unterschiedlich sein. Ich werde mich deshalb nicht mit TStreamReader Voodoo herumschlagen, sondern mal die Variante von Aphton ausprobieren. Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 25. Okt 2012, 12:04
OK Leute...

OLD SCHOOL

Delphi-Quellcode:
Procedure Schnell;
Var
  Buffer : array[0..99] of byte;
  F : file;
  gelesen : Integer;
begin
  AssignFile(F,'Cool.txt');
  reset(F,1);
  Blockread(F,Buffer[0]),100,gelesen);
  Closefile(F);
  if gelesen = 100 then
   begin
     bla;
   end;
end;
Würde sagen NIX ist schneller!

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 25. Okt 2012, 12:31
Naja auch wenn ich diese Lösung (mit Stream) bevorzugen würde, so ganz richtig wäre sie nicht.
Die Aufgabenstellung lautet die ersten 100 Zeichen, und das sind unter XE ja wohl 16Bit Chars also ein buffer : array[0..199] of Byte; beim Auslesen müßte dann bestimmt werden ob es sich um eine 8 oder 16 Bit -Codierung handelt.
Aus den ersten 100 Zeichen im Ergebnis einen String zu machen, kann ja funktionieren aber ist auf jeden Fall riskant.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: SCHNELL: Erste 100 Zeichen aus Textdatei lesen

  Alt 25. Okt 2012, 12:37
Die Aufgabenstellung lautet die ersten 100 Zeichen, und das sind unter XE ja wohl 16Bit Chars ...
Nee, das hat mit der Delphi-Version nichts zu tun, sondern wird von der vorliegenden Datei bestimmt
Somit können die ersten 100 Zeichen mal 100 Bytes sein, mal 200 oder in Zukunft evtl. sogar noch mehr.

Problematisch ist die zuverlässige Erkennung, welche Codierung für die Textdatei verwendet wurde und kein BOM (in der Textdatei) existiert, dann muss man raten.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort

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 07:02 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