AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text Wegschneiden

Ein Thema von Hackbart · begonnen am 13. Jan 2004 · letzter Beitrag vom 14. Jan 2004
Antwort Antwort
Hackbart

Registriert seit: 12. Jan 2004
Ort: Ankh Morpork
6 Beiträge
 
#1

Text Wegschneiden

  Alt 13. Jan 2004, 13:06
Ich habe folgendes Problem

Ich habe einen Text (normal *.Txt) welcher folgendermaßen aufgebaut ist

8709876 ADD ADD 5468578 (-> Nur so als Beispiel!)

Und das in endlosen Reihen. Nun sind die 1. und die letzte Spalte für die Neuumwandlung ( Gott sei Dank gibts die neue Rechtschreibung) des Assembler Codes ziemlich unprktisch. Da es aber jeden zeitlichen Ramen sprengen würde, alle per Hand zu formatieren, wollte ich fragen, ob es einen Delphi- Code gibt, welcher mir das abnimmt.

Ich hoffe, ihr versteht mein Problem und könnt mir helfen. Danke!
ES GIBT KEINE GERECHTIGKEIT, ES GIBT NUR MICH
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Text Wegschneiden

  Alt 13. Jan 2004, 13:10
Hallo Celine,

kannst Du einmal (am besten mehrere) beispielhafte Ein- und Ausgaben gegenüberstellen. Mir ist noch nicht ganz klar, was Du am Ende haben möchtest...
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Text Wegschneiden

  Alt 13. Jan 2004, 13:24
Hi! Herzlich willkommen in der DP!

Ich verstehe auch nicht ganz, was du willst


Einzelne Textabschnitte kannst du evtl. so löschen:

http://www.delphipraxis.net/internal...putername+ohne
  Mit Zitat antworten Zitat
Hackbart

Registriert seit: 12. Jan 2004
Ort: Ankh Morpork
6 Beiträge
 
#4

Re: Text Wegschneiden

  Alt 14. Jan 2004, 14:31
Der Eingegebene Text sieht folgendermaßen aus:

00000000 4D DEC ebp 386
00000001 5A POP edx 386
00000002 50 PUSH eax 386
00000003 0002 ADD [edx],al 8086
00000005 0000 ADD [eax],al 8086
00000007 000400 ADD [eax+eax],al 8086
0000000A 0F <Unknown> ? ?
0000000B 00FF ADD bh,bh 8086
0000000D FF00 INC [eax] 386
0000000F 00B800000000 ADD [eax+0x00000000],bh 8086
00000015 0000 ADD [eax],al 8086
00000017 004000 ADD [eax+0x00],al 8086
0000001A 1A00 SBB al,[eax] 8086
0000001C 0000 ADD [eax],al 8086
0000001E 0000 ADD [eax],al 8086
00000020 0000 ADD [eax],al 8086
00000022 0000 ADD [eax],al 8086
00000024 0000 ADD [eax],al 8086
00000026 0000 ADD [eax],al 8086
00000028 0000 ADD [eax],al 8086
0000002A 0000 ADD [eax],al 8086
0000002C 0000 ADD [eax],al 8086
0000002E 0000 ADD [eax],al 8086
00000030 0000 ADD [eax],al 8086
00000032 0000 ADD [eax],al 8086
00000034 0000 ADD [eax],al 8086
00000036 0000 ADD [eax],al 8086
00000038 0000 ADD [eax],al 8086
0000003A 0000 ADD [eax],al 8086
0000003C 0001 ADD [ecx],al 8086
0000003E 0000 ADD [eax],al 8086

Und ich möchte, dass der Text dann zum scluss wieder normaler Assemblercode

ADD [eax],al
ADD [ecx],al
ADD [eax],al
SBB al,[eax]
usw.. wird, damit ich das dann alles wieder Assemblieren kann. Und da es mir einfach zu zeitaufwendig ist, alles von Hand zu kopieren, möchte ich ein Programm schreiben, welches mir die Assembler Zeilen
ADD [eax],al
ADD [ecx],al
ADD [eax],al
SBB al,[eax]
aus dem obigen Text eidet und in eine neue Textdatei schreibt!
ES GIBT KEINE GERECHTIGKEIT, ES GIBT NUR MICH
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#5

Re: Text Wegschneiden

  Alt 14. Jan 2004, 14:37
so wie ich das sehe sind vor jedem deiner sinnvollen zeilen 2
Leerzeichen!

(alles zeilenweise bearbeiten)
mit pos() kannst du dies doch in einer schleife 2 mal suchen und dann immer vom
Anfang bis zur gefundenen position alles mit delete() löschen!

Und so suchst du dir einfach immer weiter bestimmte punkte bis wo
oder von wo an du deine zeile bearbeitest!
Mike Schröder
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Text Wegschneiden

  Alt 14. Jan 2004, 14:44
Wenn Du Hier im Forum suchenreguläre Ausdrücke einsetzen magst, könnte der Vollständige Code, um die Eingangsdaten aus Memo1 in die von Dir geünschte Form nach Memo2 (unter der Vorraussetzung, das keine weiteren Sonderfälle vorhanden sind) innerhalb der Ereignisbehandlungsroutine Button1Click zB so aussehen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  iLine: Integer;
begin
  Memo2.Clear;
  with Memo1.Lines, RegExp('^(.*?\s){2}(.*)\s.*?86\s*$') do
    for iLine:=0 to Pred(Count) do
      Memo2.Lines.Add( Replace(Strings[iLine], '$2', True));
end;
gruß, choose
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Text Wegschneiden

  Alt 14. Jan 2004, 14:46
Du willst ja die 1., 2. und letzte Spalte löschen.
Delphi-Quellcode:
Var F1, F2: TextFile;
  S: String;
  I: Integer;

Begin
  AssignFile(F1, 'Dateiname.txt'); Reset(F1);
  AssignFile(F2, 'Dateiname2.txt'); Rewrite(F2);
  While not EoF(F1) do Begin
    ReadLn(F1, S);
    If Pos(' ', S) > 0 Then S := Trim(Delete(S, 1, Pos(' ', S)));
    If Pos(' ', S) > 0 Then S := Trim(Delete(S, 1, Pos(' ', S)));
    If Pos(' ', S) > 0 Then Begin
      I := Length(S);
      While S[I] <> ' do Dec(I);
      S := Trim(Copy(S, 1, I - 1));
    End;
    WriteLn(F2, S);
  End;
  CloseFile(F2);
  CloseFile(F1);
End;
PS: Für sowas mißbrauche ich aber meistens den Texteditor und Excel.
In diesem Beispiel hätte ich einfach jedes Leerzeichen im Texteditor durch je einen Tabulator ersetzt.
Danach alles nach Excel kopiert. (da wird ja alles durch den Tabulator auf verschiedene Spalten verteilt)
Und aus Excel dann einfach alles ab der 3. Spalte zurück in den Editor, da werden natürlich wieder aus den Tabulatoren Leerzeichen gemacht.
Und fertig.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#8

Re: Text Wegschneiden

  Alt 14. Jan 2004, 15:14
@himutsu

Mus i nicht noch initialisiert werden?
Delphi-Quellcode:
//...
    If Pos(' ', S) > 0 Then Begin
      I := length(S);
      While S[I] <> ' do Dec(I);
//...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

Re: Text Wegschneiden

  Alt 14. Jan 2004, 15:32
Hast recht, hatte ich wohl überseh'n
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Hackbart

Registriert seit: 12. Jan 2004
Ort: Ankh Morpork
6 Beiträge
 
#10

Re: Text Wegschneiden

  Alt 14. Jan 2004, 16:51
Danke, himutsu, dass war genau der Code, den ich benötigt hatte. Warum ich nicht selbst darauf gekommen bin? Das hilft mir extrem weiter.

PS: Du wirst doch aber zugeben, dass es enorm leichter ist, 2,5k Zeilen Text von einem Programm umwandeln zu lassen, als erst überall Tabulatoren einzufügen etc. etc. etc...
Getreu nach dem Motto
"Never let a human do, what a computer can do better"
ES GIBT KEINE GERECHTIGKEIT, ES GIBT NUR MICH
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz