Autor Beitrag
ShoAn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 10:23 
hallo,
ich hab ein problem, und zwar weiß ich nicht wie ich eine date (zb. doc) in ein string speichern kann. so dass das dann aussieht, als würde ich die datei mit notpad öffnen.

also wenn ich die datei zb mit assignfile, reset, readln, usw in ein memo einlese bekomm ich nur sowas:
Zitat:
ŠĻą”±

aber da mit kann ich nix anfangen.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 10.10.03 10:35 
Hallo,

Moment, willst du selber Dateien Speichern und diese dann lesen oder möchtest du Winwords *.doc Dateien öffnen?

Gruß
Klabautermann
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 11:06 
nene, speichern wollt ich nichts.

also letztendlich will ich ein suchscript schreiben. dass ich, wie bei google, bestimmte suchbegriffe eingebe. und mein script soll dann doc und txt dateien nach den wörtern suchen. dann soll der die dateien auflisten, aber sortiert nach der häufigkeit, wie oft die suchwörter vorkommen.

naja bis dahin isses noch weit ;)

erstmal muss ich versuchen doc-dateien auszulesen :)
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 10.10.03 11:27 
das wird nicht einfach, weil doc dateien sind biny aufgebaut, und du musst wissen wie der header aussieht und welche version diese doc datei ist, sonst bringt das nichts, und das ist ein aufwand. selbst mit TFileStream dauert das seine zeit :(

_________________
MFG
Michael Springwald, "kann kein englisch...."
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 10.10.03 12:05 
Hallo,

ich kann Mimi nur zustimmen. (Winword) Doc-Dateien sind nicht ohne, da sie auch von Winword Version zu Version unterschiedlich sind (um Konkurrenten das Schreiben von Import filtern zu erschweren). Daher ist es enorm aufwändig soetwas selbst zu machen. Alternativ kannst du natürlich Winword Fernsteuern und es zum Suchen Missbrauchen. Dann muss der Anwender aber neben deinem Programm auch Winword installiert haben.

Gruß
Klabautermann
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 12:06 
aber wieso denn?

notpad kann auch doc dateien öffnen, da is zwar noch ziehmlich viel müll dabei, aber auch der richtige text. und den brauch ich ja.

das kannst du selbest ausprobiern, indem du notpad startest, auf datei und öffnen klickst. dann bei dateityp alle dateien auswählen. markier dann ne doc-datei und öffne sie.

nur, wie macht das notpad??
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Fr 10.10.03 12:09 
Hi,

ich denk mal das einfachste ist wenn du nen Memo nimmst und dann die Datei eifach so öffnest
ausblenden Delphi-Quelltext
1:
2:
3:
4:
IF OpenDialog1. Execute THEN
 BEGIN
  Memo1.LoadFormFile(OpenDialog1.FileName);
 END;


Du bracust eben nen Memo und nen Opendialog :)
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Fr 10.10.03 12:33 
Aber auch damit wird er die Worddatei nicht in lesbarer Form erhalten.

barfuesser
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Fr 10.10.03 12:56 
barfuesser hat folgendes geschrieben:
Aber auch damit wird er die Worddatei nicht in lesbarer Form erhalten.

Ich glaube das wollte ShoAn auch nicht:
ShoAn hat folgendes geschrieben:
notpad kann auch doc dateien öffnen, da is zwar noch ziehmlich viel müll dabei, aber auch der richtige text. und den brauch ich ja.


Gruß
Tino
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 13:21 
ich hab mir jetzt mal eine test.doc datei gemacht. also in word eine neu datei erstellt. dann hab ich ganz normal geschrieben:
Zitat:
Dies ist ein Test.


so, nun öffne ich die datei mit notepad, und ich sehe das (musste ein wenig kürzen, sonst hätt ich hier das templet zerstört):
Zitat:
ŠĻą”±į >  ž’   !  #  ž’’’ ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ģ„Į 9  šæ     bjbjżĻżĻ  . Ÿ„ Ÿ„  ’’ ’’ ’’ l ² ² ² ² ² ² ²  Ę ą ą ą ą ģ Ę - ¶         ¬  ® ® ® ® ® ® $ ć   „ Ņ  ²      Ņ  ² ²   ē     
²  ²  ¬   ¬  ”  ¬ ² ² ¬  ų uR»ĆĘ  ą  ¬ ¬ ż 0 - ¬ ‡ 
‡ ¬  Ę Ę ² ² ² ²  Ł Dies ist ein Test.
     ż     ż  , 1h°‚. °ĘA!°‰"°‰#‰$n%° °Ä°Ä Ä  
 i   < @ń’ <  S t a n d a r d   CJ _HaJ mHsHtH B A@ņ’” B  A b s a t z - S t a n d a r d s c h r i f t a r t   ’’’’  š 0 € €              ’’  D o m i n i k W i n t e r 7 C : \ D o k u m e n t e u n d E i n s t e l l u n g e n \ D o m i n i k \ D e s k t o p \ t e s t . d o c ’@€   |Št      P  @ ’’  U n k n o w n ’’  ’’ ’’  ’’ ’’  ’’  G ‡z € ’ T i m e s N e w R o m a n 5   € S y m b o l 3&  ‡z € ’ A r i a l "  ńˆ šÄ © FSz¦GSz¦           ! 𠉉“ “ 0   2ƒ š  ’’  D i e s i s t e i n T e s t  D o m i n i k W i n t e r  D o m i n i k W i n t e r ž’    ą…ŸņłOh«‘ +'³Ł0 t   ˆ    ¬  ø  Š  Ü  č  ü    <
H  T  \  d  l  ä   Dies ist ein Test d   ies  Dominik Winter s  omi  omi Normal.dot t  Dominik Winter s  1 mi  Microsoft Word 9.0 @ ܬ|Ć@ "p Ć       ž’    ÕĶ՜.“— +,ł®0   h  p  ˆ    ˜  Ø  °  ø  Ą
Č ę  ä 
DevITES GmbH n        ü
   Dies ist ein Test     Titel          ž’’’

  ž’’’       ž’’’       ž’’’ż’’’" ž’’’ž’’’ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’R o o t E n t r y  ’’’’’’’’   Ą F @!z»Ć$ € 1 T a b l e   ’’’’’’’’’’’’   W o r d D o c u m e n t   ’’’’’’’’   S u m m a r y I n f o r m a t i o n (   ’’’’    D o c u m e n t S u m m a r y I n f o r m a t i o n 8 ’’’’’’’’’’’’    C o m p O b j    ’’’’ j O b j e c t P o o l   ’’’’’’’’’’’’ @!z»Ć@!z»Ć ’’’’’’’’’’’’  ž’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ ž’
’’’’  Ą F Microsoft Word-Dokument
MSWordDoc  Word.Document.8 ō9²q

und wenn ich nun mit loadfromfile versuche ins memo zu laden hab ich nur das:
Zitat:
ŠĻą”±į


so, und ich brauch das, was notpad macht, um wenigstens an den text zu kommen. die ganzen sonderzeichen kann man ja irgendwie noch rausfiltern, wenn ich an den text gekokmmen bin ;)
in php gibt es eine ganz tolle funktion die "file_get_contents()" heißt, aber die gibts leider nicht bei delphi :-/

ps: sorry für die vielen qutes
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 10.10.03 14:30 
wenn es darauf nur ankkommt kannst du folgendes machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure LoadFile(FIleName:String);
var 
  Stream:TFileStream;
begin
  Stream:=TFileStram.Create(FileName, fmOpenRead);
  Memo1.LoadFromStream(Stream);//sollte funktionieren
  Stream.Free;  
end;

_________________
MFG
Michael Springwald, "kann kein englisch...."
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 14:51 
habs genau so gemacht, musst nur noch bei "stram" ein "e" reinmachen und nach "memo1." noch ein "lines." ;)

aber da macht der genau das gleiche:
Zitat:
ŠĻą”±į


das gibts doch net, ich werd hier noch ganz verrückt :eyecrazy:, notepad is verhext
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 10.10.03 15:10 
Hallo,

vieleicht solltest du den Stream Byteweise durchgehen und nur die Bytes, die erlaubte Zeichen enthalten, deinem Memo hinzufügen. Damit dürften dann sonderzeichen, die das verhalten des Memos stören von diesem fern gehalten werden.

Gruß
Klabautermann
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 15:15 
@Klabautermann:
ich glaub, dass mit dem byteweise auslesen brauch ich nicht, hätt ich sowieso net gekonnt ;)

ich hab einfach mal aus spaß ein richedit anstatt ein memo feld genommen. und aufeinmal seh ich was :D
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.10.03 15:35 
wahrscheinlich kommt in der datei ein #0 vor. der text dahinter wird von tmemo einfach abgeschnitten.
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 15:39 
hm, kann sein ;)

naja, jetzt bleibt nur noch die frage: wie suche ich ein teilstring in einem tstream?
oder noch besser wäre natürlich eine funktion, die mir die anzahl der gefundenen wörter ausgibt, aber das kann man sich zu not selbst programmiern ;)
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.10.03 15:59 
nur das erste vorkommen? dann nimm "Pos"
ansonsten wirds ein bissl komplizierter, aber ist immer noch machbar
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Fr 10.10.03 16:04 
wenn er mit Streams arbeitet kann er schlecht pos nutzen, so eine funktion brauche ich auch noch dringend, aber ich habe keine idee wie sie aufgebaut sein könnte :(
am besten wäre ja, wenn er einen eingen word anzeige programm schreiben würde.

_________________
MFG
Michael Springwald, "kann kein englisch...."
obbschtkuche
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.10.03 16:11 
er muss den string erst einlesen, anders gehts nicht.
ich hab aber mal eben eine Fkt geschrieben, die alle Vorkommen eines Teilstrings in einem String sucht.

ausblenden volle Höhe 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:
type
 TIntArray = array of integer;

function Search_all(substr: string; str: string): TIntArray;
var
 s,s2,s3: pchar;
 idx: integer;
begin
 s := pchar(str);
 s2 := pchar(substr);
 idx := 1;
 repeat
  if s^ = s2^ then
  begin
   s3 := pchar(str);
   inc(s3,idx-1);
   while (s2^ <> #0and (s3^ <> #0and (s2^ = s3^) do
   begin
    inc(s2);
    inc(s3);
   end;
   if (s2^ = #0then
   begin
    setlength(result,length(result)+1);
    result[high(result)] := idx;
   end;
   s2 := pchar(substr);
  end;
  inc(s);
  inc(idx);
 until s^ = #0;
end;
ShoAn Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Fr 10.10.03 16:32 
hey, cool, danke :D

kann aber das leider erst am montag testen.

also bis dahin ..