![]() |
DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bins wieder.
Hab ein kleines Problem. Ich hab ein speziäles Format erstellt. Nun wollte ich zu dieses Format in verschiedene Edits auslesen. Hier mal das Format:
Code:
(Die erste Zeile ist nicht vorhanden!)
#####Intra.drpqmat#######
8,16,19,22,26,27,29,34, 16,16,22,24,27,29,34,35, 19,22,26,27,29,34,35,38, 22,22,26,27,29,34,35,40, 22,26,27,29,32,35,40,48, 26,27,29,32,35,40,48,50, 26,27,29,35,40,48,50,60, 27,29,35,40,48,50,60,62
Code:
Diese Zwei Dateien sollen ausgelesen werden
#####Inter.drpqmat#######
16,20,24,28,32,36,40,44, 20,24,28,32,36,40,44,48, 24,28,32,36,40,44,48,52, 28,32,36,40,44,48,52,56, 32,36,40,44,48,52,56,58, 36,40,44,48,52,56,58,60, 40,44,48,52,56,58,60,62, 44,48,52,56,58,60,62,62 und jede Zahl kommt in eine andere Edit. Beim speichern sollte dann wieder das Format ausgegeben werden. So sieht der Teil des Programms aus: ![]() Die Edits sind wie folgt nummerriert: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 57 58 59 60 61 62 63 64 und 65 66 67 68 69 70 71 72 ... 121 122 123 124 125 126 127 128 Eigentlich müsste es simple sein, ich aber hab schon geschlagene 3 Stunden mit dem Problem gekämpft. Könnte mir einer von Euch erklären, wie ich das hinbekomme? Danke schon mal. |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
![]() |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
bzw. Erstell die Edit's dynamisch.
Delphi-Quellcode:
Und dann sollte das Lesen mittels
type
TForm = ... private aM1 : array [0..?, 0..?] of TEdit; ... end; FormCreate begin for y := 0 to ? do for x := 0 to ? do begin fTmp := TEdit.Create(Self); fTmp.Parent := Self; fTmp.SetBounds( ??? ); aM1[x, y] := fTmp; end; end; GetLine <- Muss selbst geschrieben werden SplitLine <- Muss selbst geschrieben werden in einer geschachtelte For to do lösbar sein. |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Hi,
erst mal tief durchathmen. Ich weiß ja nicht, wie viel du weißt. Du könntest z. B. die Dateien zuerst in ein TStringList laden und anschließend aus dieser, Zeile für Zeile, die Zahlen auslesen.
Delphi-Quellcode:
Zum Auslesen verwendest du am Besten "AnsiPos" und ermittelst damit die einzelnen Zahlen. Anschließend löscht du mit "Delete" den bereits eingelesenen Wert aus der aktuellen Zeile, damit du "AnsiPos" für die nächste Zahl verwenden kannst. Das ganze muss auch noch in einer Schleife für jede Zeile geschehen.
var
myList: TStringList; begin myList := TStringList.Create; try myList.LoadFormFile('Dateiname'); // Zeilen auslesen finally myList.Free; end; end; Übrigens kannst du mit [] auf die einzelnen Zeilen zugreifen z. B. myList[0] für die erste Zeile. Allerdings versuchts du dein Problem sehr umständlich zu lösen, lass es doch erst gar nicht so weit kommen und verwende die Komponente TStringGrid. |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Die Edits sind ja steigend nummeriert.
Kann man nicht irgendwie Zeichen 1 ist Edit1, Zeichen 3 ist Edit2, Zeichen 5 ist Edit 3 etc. lesen und Edit1 ist Zeichen 1 + ',', Edit2 ist Zeichen 3 +',', Edit 3 ist Zeichen 5 + ',' etc schreiben? |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Suche mal in der OH nach
![]() Das löschen des zuvor gefundenen Teilstrings ist doch vollkomen unnötig. Du lädst dir die Datei in eine ![]() Pro Zeile suchst du dir mit PosEx das ',' und gibst dem 3. Parameter die zuvor gefundene Position. Wenn du für jeden gefundenen Wert eine numerische Variable hochzählst, hast du gleich den Name des Edits. Mit ![]() ![]() Den vorherigen Absatz kannst du dir aber sparen indem du ein ![]() |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Liste der Anhänge anzeigen (Anzahl: 1)
Stringgrid ... :wall:
Ich hab mal das Project mit zwei Stringgrids ausgestattet. Nur kann ich da überhaupt nichts editieren gar was in die Zellen schreiben. Vieleicht könntest Du mir ein Beispiel erstellen, damit ich weis, wie ich es umsetzen könnte. Denke so an ein Project mit dieser abgespeckten DRPQMAT:
Code:
Die dann wie auch immer eingelesen wird.
1,2,
3,4 Ich werde mir morgen die Tips und Links aus deinem letzen Post anschauen und sehen ob ichs auf die Reihe bekomme. Hier noch mal das Project mit Stringgrids. (Hatte ich auch zuerst im Sinn, konnte aber wie gesagt doch nichts damit anfangen...) Gute Nacht Euch allen. |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Liste der Anhänge anzeigen (Anzahl: 1)
Das mit dem Speichern hab ich gelöst. Nun fehlt mir noch das Laden...
Mit diesem Code bekomm ich alle in eine Zeile ohne den , und Leerzeichen.
Delphi-Quellcode:
Nun müsste es doch einfacher sein die einzelnen Zeichen den Edit zuzuordnen.
(Trim(StringReplace(form1.ListInter.Items.Text, #13#10, '', [rfReplaceAll]))
Zeichen1:=Edit1.text; Zeichen2:=Edit2.text; ... Zeichen64:=Edit64.text; Die Frage ist noch wie... |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Liste der Anhänge anzeigen (Anzahl: 1)
Editieren der Werte im Grid ist doch easy!
Schau dir mal die Options des StringGrids im OI an. Da wirst du über goEditing & goAlwaysShowEditor stolpern. Das sind genau die Optionen, die dich interessieren. Hier noch ein wenig code, der dir Laden & Speichern im Grid zeigen soll.
Delphi-Quellcode:
Procedure load_Grid(Grid: TStringGrid);
Var X, Y, ActPos, PrevPos : Integer; sl : TStrings; Begin If Not OpenDialog1.Execute Then Exit; sl := TStringList.Create; Try // Öffne Datei in StringList sl.LoadFromFile(OpenDialog1.FileName); // laufe durch die sl For Y := 0 To pred(sl.Count) Do Begin // Spalte 0 X := 0; PrevPos := 1; // suche das erste "," ActPos := PosEx(',', Sl[Y], PrevPos); // verlasse die Schleife wenn kein "," mehr gefunden wurde While ActPos > 0 Do Begin // schreibe in die Zelle den Text zwischen dem vorherigen "," und dem gefundenen "," Grid.Cells[X, Y] := Copy(sl[Y], PrevPos, (ActPos - PrevPos)); // Postion des letzten Kommas PrevPos := succ(ActPos); // suche das nächste "," ActPos := PosEx(',', Sl[Y], PrevPos); inc(X); End; // zum Schluss noch den Text ab dem zuletzt gefundenen Komma in die Zelle Grid.Cells[X, Y] := Copy(sl[Y], PrevPos, Length(sl[Y])); End; Finally // Freigeben der sl FreeAndNil(SL); End; End; Procedure save_Grid(Grid: TStringGrid); Var X, Y : Integer; sl : TStrings; TempStr : String; Begin If Not SaveDialog1.Execute Then Exit; sl := TStringList.Create; Try With Grid Do For Y := 0 To pred(Grid.RowCount) Do Begin // Leeren des TempStr vor jeder Zeile TempStr := ''; For X := 0 To pred(Grid.ColCount) Do TempStr := TempStr + Trim(Cells[X, Y]) + ','; // Hinzufügen von TempStr zur sl // in der letzten Zeile muss das letzte Komma abgeschnitten werden If Y = pred(Grid.RowCount) Then sl.Add(Copy(TempStr, 1, Length(TempStr) - 1)) Else sl.Add(TempStr); End; // Speichern der StringList sl.SaveToFile(SaveDialog1.FileName); Finally // Freigeben der sl FreeAndNil(SL); End; End; |
Re: DRPQMAT-Datei bearbeiten (TXT-Datei auslesen)
Delphi-Quellcode:
Erzeugt eine Edit mit folgendem Inhalt:
if not OpenDialog1.execute then Exit;
Listintrain.Items.LoadFromFile(OpenDialog1.FileName); Edit129.text:=(Trim(StringReplace(Listintrain.Items.Text, #13, '', [rfReplaceAll]))) ; 1,2,3,4,5,6,...,64 Nun müsste ich die einzelnen Zahlen vor jedem , in eine Edit schreiben können. Muss mir mal PosEx näher anschauen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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