warum speicherst du sie nicht einfach?
Du kannst es ganz einfach mit & machen!
[autoit='Beispiel']
$1 = "1"
$2 = "2"
MsgBox (0,"",$1 & "," & $2)
warum speicherst du sie nicht einfach?
Du kannst es ganz einfach mit & machen!
[autoit='Beispiel']
$1 = "1"
$2 = "2"
MsgBox (0,"",$1 & "," & $2)
ich möchte einzeln die werte aus einer variable auslesen können, wie oben beschrieben, weil später in einer csv datei die kundennamen rein sollen, und es soll ja so wenig wie möglich "doppelt" geschrieben werden. am besten aus einer ini-datei. das auslesen klappt ja schon soweit, nur es würde besser passen wenn ich wie oben beschrieben werte einzeln auslesen könnte mit ner schleife.
Schau mal in die Hilfe , was du suchst ist IniReadSection .
Wenn ich das Richtig verstehe geht das immer so weiter, oder Kunde1 Kunde2 Kunde3 und so oder? Dann mach es einfach so:
$INI = "Test.ini"
$KundenZahl = 2
Global $Text
For $1 = 1 To $KundenZahl
$Read = IniRead ($INI,"Kunden","Kunde" & $1,"")
If $Text <> "" Then
$Text = $Text & "," & $Read
Else
$Text = $Read
EndIf
Next
MsgBox (0,"",$Text)
Und die INI:
[Kunden]
Kunde1=1
Kunde2=2
Hmm,
guck mal unter den Array-Funktionen nach. Habe derzeit leider nur eine Uralt-Version installiert, aber mit Stringsplit kannst Du mehrere Kundennamen in einem String in ein Array kopieren, und es gibt auch eine Arrayfunktion für den umgekehrten Weg.
Dann kannst Du über den Index des Array auf die einzelnen Elemente zugreifen.
Gruß,
True
wie jetzt, irgend wie blick ich da nicht durch! Willst du das was IniReadSection zurückgibt in einen $ bekommen?
Hallo Gorgo,
bitte beschreibe Dein Problem etwas genauer. Ich habe jetzt den gesamten Thread 3x komplett durchgelesen und könnte es sein daß Du die Variablen in der FOR-Schleife benutzen willst, um nicht die 1,2,3,4,...Maximaleanzahlkunden schreiben zu müssen?
Also in etwa so?
[autoit]For $index =1 To $maximaleanzahlkunden ;wäre z.B. die Anzahl der Zeilen deiner *.INI-Datei, in jeder Zeile steht ein Kunde
$kunde[$index] = _hierliestdieschleifedatenvonirgendwoher() ; z.B. Iniread()
Next
Im Feld $kunde[] wären nun alle Kunden aus der *.INI Datei enthalten.
Um die jetzt alle als *.CSV abzuspeichern könnte man das so machen
[autoit]For $index =1 To $maximaleanzahlkunden ;wäre z.B. die Anzahl der Zeilen deiner *.INI-Datei, in jeder Zeile steht ein Kunde
_schreibedatenirgendwohin($kunde[$index] & ",") ; z.B. in die *.CSV
Next
Inhalt der *.CSV wäre somit
Kunde1,kunde2,kunde3,kunde4......
ciao
Andy
Was geht noch nicht?
Wozu willst du InIReadSection in eine Schleife machen? Probier es mal so:
$Read = IniReadSection(@ScriptDir & "\kunde.ini", "Kunde") ; z.B. Iniread()
For $index =1 To $Read[0][0]
$kunde[$index] = $Read[$index][1]
Next
PS: Ist ungetestet!
EDIT: Ach, und mach deine Scripte doch mal in einen Spoiler und einen AutoIt-Quellcode Feld!
Einfach erst oben im bei erstellen auf SP und dann auf das AutoItIcon klicken, und dann das Script zwischen das zeugs machen!
Hallo,
sollte eigentlich nun alle Klarheiten beseitigen^^
Dim $kunde[10],$Schluessel[10] ;je nach grösse der [Kunde]-sektion in der *.INI
[/autoit] [autoit][/autoit] [autoit];Inidatei erstellen
$inidatei="Kundetest.ini"
filedelete($inidatei)
$sData = "kunde1=adam"&@crlf&"kunde2=berta"&@crlf&"kunde3=caesar"
IniWriteSection($inidatei, "Kunde", $sData)
;Daten aus *.ini auslesen
$Read = IniReadSection(@ScriptDir & "\kundetest.ini", "Kunde") ; z.B. Iniread()
For $index =1 To $Read[0][0]
$schluessel[$index] = $Read[$index][0]
$kunde[$index] = $Read[$index][1]
msgbox(0,"",$schluessel[$index]&" "&$Kunde[$index])
Next
1. wie willst du es denn haben?
2. denke ich das das problem daran liegt das die ganze exel aktion innerhalb der schleife liegt (objcreate etc)
3. halte ich es für unnötig die rückgabe der ini nochmal in 2 extra arrays aufzuteilen (man kann doch einfach $read[$index][0] ;schlüssel $read[$index][1] ;kunde
Hallo,
Gorgo nicht böse gemeint, aber du kennst den Spruch von wegen Würmer aus der Nase ziehen?
Es wäre alles viel einfacher für alle Beteiligten, wenn du in deinen Startpost 2 Dinge integriert hättest:
ZitatAlles anzeigen1. DAS hab ich....*.INI Datei mit folgendem Format
[kunden]
kunde1=adam
kunde2=berta
Kunde3=cicero
....2. DA will ich hin.....Excel Tabelle erstellen mit
$app.Cells(1,1).Value = @MDAY &"." & @MON &"." &@YEAR & " um " & @HOUR &":" &@MIN &"Uhr"
$app.Cells(2,1).Value = adam
$app.Cells(2,2).Value = berta
$app.Cells(2,3).Value = cicero
$app.Cells(2,4).Value = nocheiner
......
Wie könnte eine Lösung aussehen?
Dann wäre die gesamte Aktion sicher in wenigen Stunden vom Tisch gewesen....
Ok, zum Ablauf:
Du brauchst eine Schleife innerhalb du die Kundennamen in der *.Ini-Daten nacheinander ausliest.
Diese eingelesenen Daten sollen in derselben Schleife in eine Excel-Tabelle geschrieben werden.
Solange weitermachen, bis keine weiteren Daten mehr in der *.ini sind.
Programm:
[autoit]*.ini-Datei öffnen und Kundenanzahl rausfinden
*.excel-Datei öffnen und Datum und Uhrzeit in Zelle (1,1)ff schreiben
Schleife: for $index=1 to kundenanzahl
Schlüssel[$index] lesen (falls du den überhaupt brauchst...)
Kunde[$index] aus *.ini-datei lesen...
...und in der *.excel-Datei in Zelle(1,$index+1) schreiben
schleife wiederholen bis alle Kundennamen in der *.excel-Datei stehen
*.ini- und *.excel-Dateien schliessen
Jetzt müsstest du es schaffen :o)
ciao
Andy
ich wette jetzt beschwert er sich dass dein programm ne fehlermeldung bringt Andy :D:D:D:D
Padmak
Hallo,
bin grade bissl über die Excel-Daten gestolpert. Hab seit mehr als 10 Jahren kein Excel mehr. Für den Wert einer MS-Office-Lizenz bekam ich damals 5(!) Staroffice Lizenzen (die übrigens heute noch problemlos laufen).
Daher klinke ich mich hier aus und übergebe an die DCOM-Spezialisten.
Weiter oben im Thread war doch von einer *.csv-Datei die Rede? Damit hätte ich kein Problem gehabt
ciao
.Andy
Es geht nach wie vor um eine csv-datei
Ist ja im prinzip ähnlich einer excel-datei.
Habt ja recht das ich mich besser hätte ausdrücken sollen
Es war eben so geplant das die Kunden von einer ini-Datei ausgelesen werden sollen, wegen späteren Erweiterungen und diese dann in einer
csv-datei übergeben werden sollen. Also in jeder Zelle ein Kunde steht, mithilfe von Schleifen. Aber danke für eure Mühen.
P.S. Ist klar das es ne Fehlermeldung gibt mit dem Quellcode von Andy
Ich hab nicht den ganzen Thread gelesen, aber bei csv-Dateien hilft dir möglicherweise BugFix' 2DArrayFunktionen
Alles anzeigen[kunden]
kunde1=adam
kunde2=berta
Kunde3=cicero
....2. DA will ich hin.....Excel Tabelle erstellen mit
$app.Cells(1,1).Value = @MDAY &"." & @MON &"." &@YEAR & " um " & @HOUR &":" &@MIN &"Uhr"
$app.Cells(2,1).Value = adam
$app.Cells(2,2).Value = berta
$app.Cells(2,3).Value = cicero
$app.Cells(2,4).Value = nocheiner
......
Wie könnte eine Lösung aussehen?
Programm:
[autoit]*.ini-Datei öffnen und Kundenanzahl rausfinden
*.excel-Datei öffnen und Datum und Uhrzeit in Zelle (1,1)ff schreiben
Schleife: for $index=1 to kundenanzahl
Schlüssel[$index] lesen (falls du den überhaupt brauchst...)
Kunde[$index] aus *.ini-datei lesen...
...und in der *.excel-Datei in Zelle(1,$index+1) schreiben
schleife wiederholen bis alle Kundennamen in der *.excel-Datei stehen
*.ini- und *.excel-Dateien schliessen
Komme leider nicht zu der Lösung, habe es versucht klappt leider nicht. Kann mir einer zu dem genannten Zitat nen Beispiel schreiben?
Danke schon mal
P.S. Hatte die letzten Wochen wenig Zeit mich mit dem Problem zu beschäftigen.es soll nach wie vor in einer csv-Datei geschrieben werden.
Hallo,
da du deine bisherigen Postings in diesem Thread alle gelöscht hast, wäre es ggf sinnvoll, dein Script zu posten und eine Problembeschreibung zu erstellen.
*GlaskugelmodusON*.....ich seh nix......*GlaskugelmodusOFF*
ciao
andy
Da habe ich gerade auch gesehen, war nen versehen;-)
[autoit]
$ini = IniReadSection(@ScriptDir & "\kunden.ini", "Kunden")
$kunde1 = $template [1][1]
$kunde2 = $template [2][1]
$scriptdir= "C:\test.csv"
[/autoit][autoit][/autoit][autoit];Excel öffnen
$app = ObjCreate("Excel.application")
$app.Visible = true
$open = $app.Workbooks.Open _
($scriptdir)
;in Excel schreiben
$app.Cells(1,1).Value = @MDAY &"." & @MON &"." &@YEAR & " um " & @HOUR &":" &@MIN &"Uhr"
$app.Cells(2,1).Value = $kunde1
$app.Cells(2,2).Value = $kunde2
Gruß
Gorgo1984
Also es geht darum diese Kunden mit einer Schleife zu versehen. also so das ich nicht immer $kunde1 = $template [1][1]
$kunde2 = $template [2][1] , ... schreiben muss
Probier mal so:
[autoit];~ $ini = IniReadSection(@ScriptDir & "\kunden.ini", "Kunden") ; ?? $ini
$template = IniReadSection(@ScriptDir & "\kunden.ini", "Kunden") ; wohl eher so!
;~ $kunde1 = $template [1][1]
;~ $kunde2 = $template [2][1]
$scriptdir= "C:\test.csv"
[/autoit][autoit][/autoit][autoit];Excel öffnen
$app = ObjCreate("Excel.application")
$app.Visible = true
$open = $app.Workbooks.Open($scriptdir)
;in Excel schreiben
$app.Cells(1,1).Value = @MDAY &"." & @MON &"." &@YEAR & " um " & @HOUR &":" &@MIN &"Uhr"
For $i = 1 To UBound($template) -1
$app.Cells(2,$i).Value = $template[$i][1]
Next