![]() |
String aus Stringlist in Array schreiben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen
Habe folgendes Problem: Ich sollte aus einem Textfile welches mehrere hundert Zeilen hat, einzelne Strings herauslesen (immer 8 Stück) anhand der Startadresse, welche vor dem String steht und mit Doppelpunkt vom restlichen Teil abgetrennt ist. Für die Startadresse habe ich ein Eingabefeld welches Hexadezimale Zahlen lesen kann. Nun die Adresse besteht aus Hexadezimalen Zahlen und dient im Moment für eine externe Applikation, dass heisst ich muss die Adresse noch entfernen bevor ich den Rest des Strings in den Array schreibe. Ich habe mir gedacht dass ich das ganze File in eine Stringlist Packe und so dann die Zeilen auslese, jedoch habe ich keine Ahnung wie man dass machen kann. Im Anhang stelle ich euch noch ein Adressfile zur Verfügung. Zusätzlich hier den Angefangenen Code von mir:
Delphi-Quellcode:
Wäre froh wenn ihr mir da helfen könnt ich stehe unter grossem Zeitdruck... :roll:
procedure THauptformular.sbtnBmpErstellenClick(Sender: TObject);
var hexarray : array[0..7] of String; y : Word; ihexzaehler : integer; StrLSort : TStringList; StrSourcePfadName : String; StrSourceName : String; StrSourcePfad : String; begin DialogOpen.DefaultExt := '*.hex.gz'; DialogOpen.Filter := 'Unifont-Files (*.hex.gz)|*.hex.gz|Text-Datetein (*.txt)|*.txt|Alle Dateien (*.*)|*.*'; dialogOpen.Execute; StrSourcePfadName := Trim(dialogOpen.Files.Text); StrSourceName := StrSourcePfad; StrSourcePfad := ExtractFilePath(StrSourcePfadName); StrLSort := TStringList.Create; StrLSort.LoadFromFile(StrSourcePfadName); if TryStrToInt('$' + Edit1.Text, iHexZaehler) then begin iHexzaehler := iHexzaehler -1; for y := 0 to 7 do begin iHexzaehler := iHexzaehler +1; hexarray[y] := StrLSort.ValueFromIndex[]; end; end; end; end. |
Re: String aus Stringlist in Array schreiben
so ganz verstehe ich nicht was Du willst.
Du hast eine Application in der die Adresse des Strings steht, richtig? Diese Adresse mußt Du in dem Textfile suchen und den folgenden String wohinkopieren? Wenn Du FF92 suchst, dann findest Du diese Zeile FF92:0002020204242418081C142220408000 Die Zeile kannst Du mit copy und pos aufsplitten, mit poskannst Du nach dem ':' suchen was davor steht ist die Adresse , was dahinter steht ist, was weiß ich. Mit stringlist.count erhälst Du die Anzahl der Zeilen in der Stringlist, diese musst Du dann durchsuchen. Hoffe, habe nicht allzuviel Stuß geschrieben. Grüße Klaus |
Re: String aus Stringlist in Array schreiben
also, ich habe ein textfile voller strings. diese strings muss ich anhand der adresse (FFFF: 10bd0...) in einen array abfüllen, jedoch ohne die adresse vor dem string.
um dies zu erledigen dachte ich mir, ich schreibe das ganze in eine stringlist, da sowieso bei stringlisten der zugriff schneller ist als auf ein file. und nun möchte ich gerne wissen, wie ich aus einer stringlist einen string finde anhand der adresse (FFFF:...) des strings?!?! |
Re: String aus Stringlist in Array schreiben
Delphi-Quellcode:
Hatte ich im vorherigen Beitrag aber schon kurz angerissen ;o)
for i:=0 to stringlist.count-1 DO
if pos('FF92:',stringlist.strings[i]) <> 0 then begin // adresse gefunden // mach etwas damit end; oder direkt darauf zugreifen: die Adresse gibt Dir ja die Zeile. $001 = Stringlist.strings[0]
Delphi-Quellcode:
Grüße
gesuchte_Zeile := stringlist.strings[StrToInt('$'+adresse)];
inhalt:=copy(gesuchte_Zeile,pos(':',gesuchte_Zeile),length(gesuchte_Zeile)); Klaus |
Re: String aus Stringlist in Array schreiben
nein, direkt darauf zugreiffen kann ich nicht, da nicht alle adressen vorhanden sind...
gruss mmfembr hast mir geholfen... besten dank! es ist für mich jetzt erledigt :dancer: :dancer: :P |
Re: String aus Stringlist in Array schreiben
In D7 lässt sich das Problem sehr elegant lösen:
Delphi-Quellcode:
Grüße vom marabu
type
TMainForm = class(TForm) Button: TButton; HexEdit: TEdit; ValueEdit: TEdit; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ButtonClick(Sender: TObject); private s: TStrings; end; var MainForm: TMainForm; implementation {$R *.dfm} procedure TMainForm.FormCreate(Sender: TObject); begin s := TStringList.Create; s.NameValueSeparator := ':'; s.LoadFromFile('c:\daten\dp\v1.txt'); end; procedure TMainForm.FormDestroy(Sender: TObject); begin s.Free; end; procedure TMainForm.ButtonClick(Sender: TObject); begin ValueEdit.Text := s.Values[HexEdit.Text]; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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